//+------------------------------------------------------------------+ //| starter.mq4 | //+------------------------------------------------------------------+ extern double Lot =0.1 ; extern int TP=0; extern int SL=0; extern int p_ma=20; extern int pK=5; extern int pD=3; extern int Slow=3; int p_bb=20; int dev=2; int p; int init() { //---- //---- return(0); } int deinit() { //---- //---- return(0); } int start() { int Tip=-1; int Ticket; double tpb,tps,slb,sls; double Price,sl ,tp ,lt; bool opn_b=false; bool cls_b=false; bool opn_s=false; bool cls_s=false; int vrem3; p=Period(); if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) { Ticket=OrderTicket(); Tip =OrderType(); Price =OrderOpenPrice(); sl =OrderStopLoss(); tp =OrderTakeProfit(); lt =OrderLots(); datetime openTime=OrderOpenTime(); } if(SL!=0) { slb=Bid-SL*Point; sls=Ask+SL*Point; } else { sls=0; slb=0; } if(TP!=0) { tpb=Bid+TP*Point; tps=Ask-TP*Point; } else { tpb=0; tps=0; } int i=0; int pe,p2,p3; pe=Period(); switch(pe) { case 1: p3=15; p2=5; break; case 5: p3=30; p2=15; break; case 15: p3=60; p2=30; break; case 30: p3=240; p2=60; break; case 60: p3=1440; p2=240; break; case 240: p3=10080;p2=1440; break; case 1440: p3=43200;p2=10080; break; case 10080: p2=43200; break; case 43200: break; } if(OrdersTotal()==0) { vrem3=0; } if(OrdersTotal()!=0) { if(iTime(NULL,p3,0)>openTime) { while(iTime(NULL,p3,i)>openTime) { i++; } if(iTime(NULL,p3,i)<=openTime) { vrem3=i; } i=0; } if(iTime(NULL,p3,0)<=openTime) { vrem3=0; } } if(p!=10080 && p!=43200) { if(OrdersTotal()==0 ) { if(iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)>iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,0) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)<50 && AskiStochastic(NULL,0,pK,pD,Slow,0,0,MODE_SIGNAL,0)&& iStochastic(NULL,0,pK,pD,Slow,0,0,MODE_MAIN,0)<50 && BidiStochastic(NULL,p2,pK,pD,Slow,0,0,MODE_SIGNAL,0) && iStochastic(NULL,p2,pK,pD,Slow,0,0,MODE_MAIN,0)<50 && BidiMA(NULL,p3,p_ma,0,0,0,0) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)>iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,0) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,1)50 && AskiStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,1)&& iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)>50) { cls_b=true; } if(iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,1)&& Bid>Price) { cls_b=true; } } if(Price>iMA(NULL,p3,p_ma,0,0,0,vrem3)&& vrem3 !=0) { if(iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)50 && Bid>iMA(NULL,p3,p_ma,0,0,0,0) ) { if(iStochastic(NULL,0,pK,pD,Slow,0,0,MODE_MAIN,0)50 && Bid>iMA(NULL,0,p_ma,0,0,0,0)&& iStochastic(NULL,p2,pK,pD,Slow,0,0,MODE_MAIN,0)50 && Bid>iMA(NULL,p2,p_ma,0,0,0,0) ) { opn_s=true; } } if( BidiStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,1) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)<50 && Bid>iBands(NULL,p3,p_bb,dev,0,PRICE_CLOSE,MODE_LOWER,0)) { opn_s=true; } } if(Tip==1 ) { if(Price>iMA(NULL,p3,p_ma,0,0,0,vrem3)) { if(iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,0)>iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,0) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,1)iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_SIGNAL,0) && iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,1)iStochastic(NULL,p3,pK,pD,Slow,0,0,MODE_MAIN,1)) { cls_s=true; } } } } if(Tip==1 && cls_s==true) { OrderClose(Ticket,Lot,Ask,2); } if(Tip==0 && cls_b==true) { OrderClose(Ticket,Lot,Bid,2); } if (OrdersTotal()==0) { if(opn_b==true) { OrderSend(Symbol(),OP_BUY,Lot,Ask,2,slb,tpb,0,0,0); if (Ticket > 0) { Alert ("Открыт ордер Buy ",Ticket); return; } } if(opn_s==true) { OrderSend(Symbol(),OP_SELL,Lot,Bid,2,sls,tps,0,0,0); if (Ticket > 0) { Alert ("Открыт ордер Sell ",Ticket); return; } } } //---- return(0); } //+------------------------------------------------------------------+