emmarobot./emmarobot.mq5
2026-09-12 11:00:06 +00:00

47 라인
EOL 없음
2 KiB
MQL5

//+------------------------------------------------------------------+
//| 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].low<lo) lo=m15[i].low; if(m15[i].high>hi) 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].low<lo && m5[1].close>lo;
bool sellSweep=m5[1].high>hi && m5[1].close<hi;
bool buyWick=lowWick>body*WickRatio && m5[1].close>m5[1].open;
bool sellWick=highWick>body*WickRatio && m5[1].close<m5[1].open;
if(buySweep && buyWick && m5[1].close>e[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].close<e[0] && r[0]>42 && 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);
}
}