//+------------------------------------------------------------------+ //| EmmaRobot BEST - Sweep Only | //+------------------------------------------------------------------+ #property strict input double Lot=0.01; input int WickRatio=3; int rsi,ema; int OnInit(){ rsi=iRSI(_Symbol,PERIOD_M15,14,PRICE_CLOSE); ema=iMA(_Symbol,PERIOD_H1,50,0,MODE_EMA,PRICE_CLOSE); return(INIT_SUCCEEDED); } void OnTick(){ if(PositionsTotal()>0) return; if((int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD)>400) return; MqlRates m15[]; MqlRates m5[]; CopyRates(_Symbol,PERIOD_M15,0,40,m15); CopyRates(_Symbol,PERIOD_M5,0,3,m5); double r[]; double e[]; CopyBuffer(rsi,0,0,2,r); CopyBuffer(ema,0,0,2,e); double lo=m15[1].low; double hi=m15[1].high; for(int i=2;i<30;i++){ if(m15[i].lowhi) hi=m15[i].high; } double body=MathAbs(m5[1].close-m5[1].open); double lowWick=MathMin(m5[1].open,m5[1].close)-m5[1].low; double highWick=m5[1].high-MathMax(m5[1].open,m5[1].close); bool buySweep=m5[1].lowlo; bool sellSweep=m5[1].high>hi && m5[1].closebody*WickRatio && m5[1].close>m5[1].open; bool sellWick=highWick>body*WickRatio && m5[1].closee[0] && r[0]>38 && r[0]<58){ double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); double sl=m5[1].low-150*10*_Point; double tp=ask+(ask-sl)*2; MqlTradeRequest q; MqlTradeResult w; ZeroMemory(q); q.action=TRADE_ACTION_DEAL; q.symbol=_Symbol; q.volume=Lot; q.type=ORDER_TYPE_BUY; q.price=ask; q.sl=sl; q.tp=tp; q.deviation=20; q.magic=106587733; OrderSend(q,w); } if(sellSweep && sellWick && m5[1].close42 && r[0]<62){ double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); double sl=m5[1].high+150*10*_Point; double tp=bid-(sl-bid)*2; MqlTradeRequest q; MqlTradeResult w; ZeroMemory(q); q.action=TRADE_ACTION_DEAL; q.symbol=_Symbol; q.volume=Lot; q.type=ORDER_TYPE_SELL; q.price=bid; q.sl=sl; q.tp=tp; q.deviation=20; q.magic=106587733; OrderSend(q,w); } }