Author: Copyright � 2010, FORTRADER.RU. ���������� �� �������
Orders Execution
It Closes Orders by itself Checks for the total of open ordersIt automatically opens orders when conditions are reached
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
FT_MADEV_2
//+------------------------------------------------------------------+
//| FT_MADEV_2.mq4.mq4
//| Copyright © 2010, FORTRADER.RU. Îòêëîíåíèå îò ñðåäíåé
//| http://www.fortrader.ru Èññëåäîâàíèå äëÿ 63 âûïóñêà æóðíàëà FORTRADER.RU
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, FORTRADER.RU. Îòêëîíåíèå îò ñðåäíåé"
#property link      "http://www.fortrader.ru Èññëåäîâàíèå äëÿ 63 âûïóñêà æóðíàëà FORTRADER.RU"

//----  parameters
extern int            InpMaDevPeriod=20;  
//extern int   timestart=1;
//extern int   timestop=1; 
extern int NumBarsSerach=100;
extern int      EA_Magic=12354;  
extern double InpLots      =0.1; 
extern int    InpTakeProfit=0;  
extern int    InpStopLoss  =0;  

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 double      maxdevbuy;
 double      maxdevsell;
 
   double STP = InpTakeProfit;
   double TKP = InpStopLoss;
   if(Digits==5 || Digits==3)
     {
      STP = STP*10;
      TKP = TKP*10;
     }
     
double madev = iCustom(NULL, 0, "madev",InpMaDevPeriod,0,1);
double madevsearch;


//Èùåì ìàêñèìàëüíûå îòêëîíåíèÿ ââåðõ è âíèç îò ñðåäíåé
for(int i=5;i<NumBarsSerach;i++){
madevsearch = Close[i]- iMA(NULL,0,InpMaDevPeriod,0,MODE_SMA,PRICE_CLOSE,i);
if(madevsearch>maxdevsell){maxdevsell=madevsearch;}
if(madevsearch<maxdevbuy) {maxdevbuy=madevsearch;}
}

Print("madev "+madev+" maxdevbuy: "+maxdevbuy+" maxdevsell: "+maxdevsell);

if(madev>maxdevsell && !ChPos(1)){OpenOrderOnMarket(1,TKP,STP);}
if(madev<maxdevbuy &&  !ChPos(0)){OpenOrderOnMarket(0,TKP,STP);}

if(madev<=0 && ChPos(1)){_OrderClose(0);}
if(madev>=0 && ChPos(0)){_OrderClose(1);}

   
//----
   return(0);
  }


 //ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type) 
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100

   int i;bool col=false;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==EA_Magic){col=true;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==EA_Magic){col=true;}
       }
    }   
return(col);
}

int OpenOrderOnMarket(int type,int slpips,int tppips)
{double op,sl,tp;int err;
   
   if(type==0)
   {
   op=Ask;if(slpips>0){sl=op-slpips*Point;}if(tppips>0){tp=op+tppips*Point;}
   err=OrderSend(Symbol(),OP_BUY,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_BUY.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   
   if(type==1)
   {
    op=Bid;if(slpips>0){sl=op+slpips*Point;}if(tppips>0){tp=op-tppips*Point;}
    err=OrderSend(Symbol(),OP_SELL,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red);
    if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
return(0);
}

//Çàêðûâàåò ïîçèöþ ïî òèïó
int _OrderClose(int type)
   {//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
   
   int err;
   for(int i=1; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
          if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_BUY.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
         }
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic)
         {
          err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
          if(err<0){Print("OrderClose()-  Îøèáêà çàêðûòèÿ OP_SELL.  OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
         }
        }
       }
   return(0);
   }

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 ---