int TrailingStop(int val){
if(TradeProfit > 0 && val==1){
TradeStopLimit = max(TradeStopLimit,LL(10));
plot("Stop",TradeStopLimit,MINV,GREEN);
}
if(TradeProfit > 0 && val==2){
TradeStopLimit = max(TradeStopLimit,HH(10));
plot("Stop",TradeStopLimit,MINV,RED);
}
return 0;
}
function M5(int sig){
TimeFrame = 5;
vars H = series(priceHigh());
vars L = series(priceLow());
vars C = series(priceClose());
vars O = series(priceOpen());
MACD(C,21,34,1);
vars hist_green = series(rMACDHist);
vars ema21 = series(EMA(C,21));
vars ema34 = series(EMA(C,34));
vars ema144 = series(EMA(C,144));
if(ema21>ema34 && ema34>ema144 && C>ema144 && hist_green[0]>0 && sig==1)enterLong(TrailingStop(1));
else if(ema21<ema34 && ema34<ema144 && C<ema144 && hist_green[0]<0 && sig==2)enterShort(TrailingStop(2));
else return 0;
}
function M1(){
TimeFrame = 1;
vars H = series(priceHigh());
vars L = series(priceLow());
vars C = series(priceClose());
vars O = series(priceOpen());
MACD(C,13,21,1);
vars hist_red = series(rMACDHist);
MACD(C,21,34,1);
vars hist_orenge = series(rMACDHist);
MACD(C,34,144,1);
vars hist_green = series(rMACDHist);
vars ema21 = series(EMA(C,21));
vars ema34 = series(EMA(C,34));
vars ema144 = series(EMA(C,144));
vars ema600 = series(EMA(C,600));
if(ema21>ema34 && ema34>ema144 && ema144>ema600 && C>ema600 && hist_orenge[0]>0 && hist_green[0]>0 && crossOver(hist_red,0))M5(1);
else if(ema21<ema34 && ema34<ema144 && ema144<ema600 && C<ema600 && hist_orenge[0]<0 && hist_green[0]<0 && crossUnder(hist_red,0))M5(2);
else return 0;
}
void run()
{
BarPeriod = 1;
LookBack = 1200;
TradesPerBar = 1;
Lots = slider(1,1,1,100,"Lots","Lots per Trade");
Capital = slider(2,100,100,10000,"Capital","Capital for trade");
DataSplit = slider(3,65,5,95,"Procent","Procent for train");
MaxLong = MaxShort = 2;
Core = -2;
brokerCommand(SET_MAGIC,11111);
brokerCommand(SET_ORDERTEXT,"EA order.");
StartDate = 20150101;
EndDate = 20191220;
if(Train) set(TESTNOW+LOGFILE);
if(Train)Hedge = 2;
if(Train)Spread = random(10)*PIP;
if(Train)NumWFOCycles = -5;
vars EquityCurve = series(EquityLong+EquityShort);
vars EquityLP = series(LowPass(EquityCurve,10));
if(EquityLP[0] < LowPass(EquityLP,100) && falling(EquityLP))
setf(TradeMode,TR_PHANTOM);
else
resf(TradeMode,TR_PHANTOM);
while(asset(loop("EUR/USD","USD/JPY")))
{
M1();
}
}