//+------------------------------------------------------------------+ //| canal-m_a_sim-v2.mq4 | //| m_a_sim@mail.ru - Ñèìàêîâ Ìèõàèë| //| http://www.mql4.com/ru/users/m_a_sim | //+------------------------------------------------------------------+ #property copyright "m_a_sim@mail.ru - Ñèìàêîâ Ìèõàèë" #property link "http://www.mql4.com/ru/users/m_a_sim" //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ extern int period =200; extern int period1 =6; extern int period2 =6; extern int stopmax=200; extern int stopmin=100; extern int Hours=72; extern int Hours1=72; extern double lot=0.1; extern int magicBUY=101; extern int magicSELL=201; extern int magicBUY1=102; extern int magicSELL1=202; int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int bar; double MAX,MIN,H,A0,A1,A2; int start() { //---- int i, j,jj, k, g, q, ticket,l; double stop; if (bar!=Bars ){ MAX=iCustom(NULL,0,"trend_v3_5",period,1,1); MIN=iCustom(NULL,0,"trend_v3_5",period,2,1); H=(MAX-MIN)/2; A0=iCustom(NULL,0,"trend_v3",period1,0,1); A2=iCustom(NULL,0,"trend_v3",period1,0,2); A1=iCustom(NULL,0,"trend_v2",period2,0,1); bar=Bars; } //BUY===================================== jj=0; if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicBUY){jj=1;} }} if (jj==0 ){ if (A0<MIN && A1>=0){ stop=H; if (H>stopmax*Point){stop=stopmax*Point;} if (H<stopmin*Point){stop=stopmin*Point;} ticket=OrderSend(Symbol(),OP_BUY ,lot,NormalizeDouble(Ask, Digits),5,Bid-stop,0," ",magicBUY,0, Blue ); }} if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicBUY){ if ( Time[0]-OrderOpenTime()>Hours*60*60 ) { if (OrderOpenPrice()<Bid ){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid, Digits),5,Violet); } }}}} jj=0; if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicBUY1){jj=1;} }} if (jj==0 ){ if (A0>MAX && A2<=MAX){ stop=H; if (H>stopmax*Point){stop=stopmax*Point;} if (H<stopmin*Point){stop=stopmin*Point;} ticket=OrderSend(Symbol(),OP_BUY ,lot,NormalizeDouble(Ask, Digits),5,Bid-stop,0," ",magicBUY1,0, Blue ); }} if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicBUY1){ if ( Time[0]-OrderOpenTime()>Hours1*60*60 ) { if (OrderOpenPrice()<Bid ){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid, Digits),5,Violet); } }}}} //SELL================================ jj=0; if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicSELL){jj=1;} }} if (jj==0 ){ if (A0>MAX && A1<=0){ stop=H; if (H>stopmax*Point){stop=stopmax*Point;} if (H<stopmin*Point){stop=stopmin*Point;} ticket=OrderSend(Symbol(),OP_SELL ,lot,NormalizeDouble(Bid, Digits),5,Ask+stop,0," ",magicSELL,0, Blue ); }} if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicSELL){ if ( Time[0]-OrderOpenTime()>Hours*60*60 ) { if (OrderOpenPrice()>Ask ){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask, Digits),5,Violet); } }}}} //---- jj=0; if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++){ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicSELL1){jj=1;} }} if (jj==0 ){ if (A0<MIN && A2>=MIN){ stop=H; if (H>stopmax*Point){stop=stopmax*Point;} if (H<stopmin*Point){stop=stopmin*Point;} ticket=OrderSend(Symbol(),OP_SELL ,lot,NormalizeDouble(Bid, Digits),5,Ask+stop,0," ",magicSELL1,0, Blue ); }} if (OrdersTotal()>0){ for(i=0;i<OrdersTotal();i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber()==magicSELL1){ if ( Time[0]-OrderOpenTime()>Hours1*60*60 ) { if (OrderOpenPrice()>Ask ){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask, Digits),5,Violet); } }}}} return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
trend_v3_5
trend_v3
trend_v2
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It Closes Orders by itself
Other Features: