31 lines
1.6 KiB
MQL5
31 lines
1.6 KiB
MQL5
|
|
//+------------------------------------------------------------------+ //| XAUUSD M1 EMA20 Cross EA - Error Free | //+------------------------------------------------------------------+ #property strict #include <Trade/Trade.mqh>
|
||
|
|
|
||
|
|
CTrade trade;
|
||
|
|
|
||
|
|
input double LotSize = 0.01; input int MagicNumber = 202602; input double TakeProfit_Pips = 200; input double TrailStart_Pips = 50; input double TrailDistance_Pips = 50;
|
||
|
|
|
||
|
|
datetime lastBarTime = 0; int emaHandle;
|
||
|
|
|
||
|
|
// Pip calculation double Pip() { if(_Digits==3 || _Digits==5) return 10*_Point; return _Point; }
|
||
|
|
|
||
|
|
int OnInit() { if(_Symbol!="XAUUSD") { Print("EA works ONLY on XAUUSD"); return INIT_FAILED; } if(_Period!=PERIOD_M1) { Print("Attach EA to M1 timeframe ONLY"); return INIT_FAILED; }
|
||
|
|
|
||
|
|
emaHandle = iMA(_Symbol, PERIOD_M1, 20, 0, MODE_EMA, PRICE_CLOSE); if(emaHandle==INVALID_HANDLE) return INIT_FAILED;
|
||
|
|
|
||
|
|
return INIT_SUCCEEDED; }
|
||
|
|
|
||
|
|
void ApplyTrailing() { double pip = Pip(); for(int i=0;i<PositionsTotal();i++) { if(!PositionSelectByIndex(i)) continue; if(PositionGetString(POSITION_SYMBOL)!=_Symbol) continue;
|
||
|
|
|
||
|
|
ulong ticket = PositionGetInteger(POSITION_TICKET);
|
||
|
|
long type = PositionGetInteger(POSITION_TYPE);
|
||
|
|
double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);
|
||
|
|
double sl = PositionGetDouble(POSITION_SL);
|
||
|
|
double tp = PositionGetDouble(POSITION_TP);
|
||
|
|
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
|
||
|
|
double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
|
||
|
|
double trailStart = TrailStart_Pips*pip;
|
||
|
|
double trailDist = TrailDistance_Pips*pip;
|
||
|
|
|
||
|
|
if(type==POSITION_TYPE_BUY && bid-openPrice>=trailStart)
|
||
|
|
{
|
||
|
|
double newSL
|