EA works fine on live trading but I couldn't back test it. MT4 journal says :
2017.06.14 18:19:03.285 2017.04.18 05:05:00 ZigZag Strategy v1 USDCHF,M30: zero divide in 'ZigZag Strategy v1.mq4' (3696,105)
I peeked into the EA code and found this at exactly 3969'th row.
else if (mode=="equityRisk") {size=((value/100)*AccountEquity())/(sl*((TickValue/ticksize)*point)*PipValue(symbol));}
This is from here:
double DynamicLots(string mode="balance", double value=0, double sl=0, string align="align", double RJFR_initial_lots=0)
{
double size=0;
string symbol=GetSymbol();
double LotStep=MarketInfo(symbol,MODE_LOTSTEP);
double LotSize=MarketInfo(symbol,MODE_LOTSIZE);
double MinLots=MarketInfo(symbol,MODE_MINLOT);
double MaxLots=MarketInfo(symbol,MODE_MAXLOT);
double TickValue=MarketInfo(symbol,MODE_TICKVALUE);
double point=MarketInfo(symbol,MODE_POINT);
double ticksize=MarketInfo(symbol,MODE_TICKSIZE);
double margin_required=MarketInfo(symbol,MODE_MARGINREQUIRED);
if (mode=="fixed" || mode=="lots") {size=value;}
else if (mode=="block-equity") {size=(value/100)*AccountEquity()/margin_required;}
else if (mode=="block-balance") {size=(value/100)*AccountBalance()/margin_required;}
else if (mode=="block-freemargin") {size=(value/100)*AccountFreeMargin()/margin_required;}
else if (mode=="equity") {size=(value/100)*AccountEquity()/(LotSize*TickValue);}
else if (mode=="balance") {size=(value/100)*AccountBalance()/(LotSize*TickValue);}
else if (mode=="freemargin") {size=(value/100)*AccountFreeMargin()/(LotSize*TickValue);}
else if (mode=="equityRisk") {size=((value/100)*AccountEquity())/(sl*((TickValue/ticksize)*point)*PipValue(symbol));}
else if (mode=="balanceRisk") {size=((value/100)*AccountBalance())/(sl*((TickValue/ticksize)*point)*PipValue(symbol));}
else if (mode=="freemarginRisk") {size=((value/100)*AccountFreeMargin())/(sl*((TickValue/ticksize)*point)*PipValue(symbol));}
else if (mode=="fixedRisk") {size=(value)/(sl*((TickValue/ticksize)*point)*PipValue(symbol));}
else if (mode=="fixedRatio" || mode=="RJFR")
Apparently, "sl" is set to 0 and then used as denominator on equity risk, balancerisk, freemarginrisk, and fixedrisk.
What is the fix for this? Should I put sl=0.0001 instead or what do I do? is this a fundamental flaw in the code? What should I do?
EDIT:
I turned off blocks and found that the error is coming from the BUY/SELL PENDING block. Kindly fix this asap.