5_8MACROSS2

Author: Copyright � 2006, MetaQuotes Software Corp.
0 Views
0 Downloads
0 Favorites
5_8MACROSS2
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                   5_8MACROSS.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double Lots=0.1;
extern int StopLoss=0;
extern int TrailingStop=0;
extern int TakeProfit=0;

extern int mafastperiod=5;
extern int mafastshift=0;
extern int mafastmethod =MODE_EMA;
extern int mafastprice=PRICE_CLOSE;

extern int maslowperiod=8;
extern int maslowshift=0;
extern int maslowmethod =MODE_EMA;
extern int maslowprice=PRICE_OPEN;

datetime TimePrev=0;

//+-----------------------------------------------------------------+

int init()
   {
   return(0);
   }

//+-----------------------------------------------------------------+

int deinit()
   {
   return(0);
   }

//+-----------------------------------------------------------------+

int start()
   {
   //Trailing Stop
   TrailingAlls(TrailingStop);
   //close/Open
   if (TimePrev==Time[0])
      return(0);
   TimePrev=Time[0];
   
   //Caculate indicators
   double fast1=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,1);
   double fast2=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,2);
   double slow1=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,1);
   double slow2=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,2);

   //LONG
   if (fast1>slow1&&fast2<slow2)
      {
      closeshrts();
      OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Stoplong(Ask,StopLoss),Takelong(Ask,TakeProfit),NULL,0,0,Blue);
      }//long

   //shrt
   if(fast1<slow1&&fast2>slow2)
      {
      closelongs();
      OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Stopshrt(Bid,StopLoss),Takeshrt(Bid,TakeProfit),NULL,0,0,Red);
      }//shrt
   return(0);
   }
//+-----------------------------------------------------------------+

double Stoplong(double price,int stop)
   {
   if(stop==0)
      return (0.0);
   return(price-(stop*Point));
   }

//+-----------------------------------------------------------------+

double Stopshrt(double price,int stop)
   {
   if (stop==0)
      return(0.0);
   return(price+(stop*Point));
   }

//+-----------------------------------------------------------------+

double Takelong(double price,int Take)
   {
   if (Take==0)
      return(0.0);
   return(price+(Take*Point));
   }

//+-----------------------------------------------------------------+

double Takeshrt(double price,int Take)
   {
   if (Take==0)
      return(0.0);
   return(price-(Take*Point));
   }

//+-----------------------------------------------------------------+

void closelongs()
   {
   int trade;
   int trades=OrdersTotal();
   for (trade=0;trade<trades;trade++)
      {
      
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol())
         continue;
      
      if(OrderType()==OP_BUY)
         OrderClose(OrderTicket(),OrderLots(),Bid,0,Blue);
      }//for
   }

//+-----------------------------------------------------------------+

void closeshrts()
   {
   int trade;
   int trades=OrdersTotal();
   for (trade=0;trade<trades;trade++)
      {
      
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol())
         continue;
         
      if(OrderType()==OP_SELL)
         OrderClose(OrderTicket(),OrderLots(),Ask,0,Red);
      }//for
   }

//+-----------------------------------------------------------------+

void TrailingAlls(int trail)
   {
   if(trail==0)
      return;

   double stopcrnt;
   double stopcal;

   int trade;
   int trades=OrdersTotal();
   for(trade=0;trade<trades;trade++)
      {
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol())
         {
         //continue;
         }
      //LONG
      if(OrderType()==OP_BUY)
         {
         stopcrnt=OrderStopLoss();
         stopcal=Bid-(trail*Point);
         if (stopcrnt==0)
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
            }
         else
            if(stopcal>stopcrnt)
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
               }
         }//LONG
      //Shrt
      if(OrderType()==OP_SELL)
         {
         stopcrnt=OrderStopLoss();
         stopcal=Ask+(trail*Point);
         if (stopcrnt==0)
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
            }
         else
            if(stopcal<stopcrnt)
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
               }
         }//Shrt
      }
   }
  
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---