Show your code.
You have to find a division x/y where y == 0.
Here are all the lines with divisions:
$ grep -E "/" y.mq4 | grep -Ev "//" lot=NormalizeDouble(AccountBalance()/10000/10,lotPrecision)*MaximumRisk; if(MicroAccount)lot=NormalizeDouble(lot/10/10,lotPrecision); ProfitTarget=(iATR(NULL,240,750,1)+iATR(NULL,60,750,1))/Point/1.75/10; if(MaxProfit>ProfitTarget)SavedProfit=MaxProfit*((100-MaxRetrace)/100);else SavedProfit=-9999; if(MaxBuyProfit>ProfitTarget)SavedBuyProfit=MaxBuyProfit*((100-MaxRetrace)/100);else SavedBuyProfit=-9999; if(MaxSellProfit>ProfitTarget)SavedSellProfit=MaxSellProfit*((100-MaxRetrace)/100);else SavedSellProfit=-9999; if(BuyOrders>0)BreakEven=(SumBuy()/BuyLots/10000000); if(SellOrders>0)BreakEven=(SumSell()/SellLots/10000000); RecActivation=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/3; double MaxLoss2 = AccountBalance()/100*MaxLossPercent2; double b=(iATR(Symbol(),PERIOD_H1,750,0))/Point; double a=(iATR(Symbol(),PERIOD_M15,750,0))/Point; double c=(b/a); double small=(b/c); double great=(b/e); double spacingmin = (a/1.25); double stddev1 = iStdDev(Symbol(),StDevTF,StDevPer,0,StDevMode,PRICE_OPEN,0)/Point; double stddev2 = iStdDev(Symbol(),StDevTF2,StDevPer2,0,StDevMode2,PRICE_OPEN,0)/Point; if ((iATR(Symbol(),15,3,0))/Point > acti || (iATR(Symbol(),15,3,1))/Point > acti || (iATR(Symbol(),15,3,2))/Point > acti || (iATR(Symbol(),15,3,3))/Point > acti || (iATR(Symbol(),15,3,4))/Point > acti || (iATR(Symbol(),15,3,5))/Point > acti) stddev3 = (iATR(Symbol(),15,3,0))*1.5/Point; else stddev3=0; if ((iATR(Symbol(),15,3,0))/Point > acti || (iATR(Symbol(),15,3,1))/Point > acti || (iATR(Symbol(),15,3,2))/Point > acti || (iATR(Symbol(),15,3,3))/Point > acti || (iATR(Symbol(),15,3,4))/Point > acti || (iATR(Symbol(),15,3,5))/Point > acti) stddev4 = (iATR(Symbol(),15,3,1))*1.5/Point; else stddev4=0; if ((iATR(Symbol(),15,3,0))/Point > acti2 || (iATR(Symbol(),15,3,1))/Point > acti2 || (iATR(Symbol(),15,3,2))/Point > acti2 || (iATR(Symbol(),15,3,3))/Point > acti2 || (iATR(Symbol(),15,3,4))/Point > acti2 || (iATR(Symbol(),15,3,5))/Point > acti2) stddev5 = (iATR(Symbol(),15,3,0))*2.25/Point; else stddev5=0; if ((iATR(Symbol(),15,3,0))/Point > acti2 || (iATR(Symbol(),15,3,1))/Point > acti2 || (iATR(Symbol(),15,3,2))/Point > acti2 || (iATR(Symbol(),15,3,3))/Point > acti2 || (iATR(Symbol(),15,3,4))/Point > acti2 || (iATR(Symbol(),15,3,5))/Point > acti2) stddev6 = (iATR(Symbol(),15,3,1))*2.25/Point; else stddev6=0; double recb=(iATR(Symbol(),15,3,1))*2.25/Point; if(-BuyCycleProfit<=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/3||CycleProfit>0)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/3)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/1.5)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*1.5)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*2)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-BuyCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*2.5)RecoveryTakeProfit=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(BuyCycleProfit<-1000.00||BuyCycleProfit>1000.00)cycleh=(CycleProfith+ProfitTarget)/1000; if(BuyCycleProfit>-999.99&&BuyCycleProfit<999.99)cycleh=(CycleProfith+ProfitTarget)/100; if(BuyCycleProfit>-99.99&&BuyCycleProfit<99.99)cycleh=(CycleProfith+ProfitTarget)/10; AfterRecStartVolh=(CycleProfit1/RecoveryTakeProfit); if(-SellCycleProfit<=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/3||CycleProfit>0)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/3)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/1.5)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*1.5)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*2)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; if(-SellCycleProfit>(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point*2*2.5)RecoveryTakeProfits=(iATR(NULL,240,50,1)+iATR(NULL,60,50,1))/Point/2; AfterRecStartVolhs=(CycleProfit1s/RecoveryTakeProfits); MarginPercent = MathRound((AccountEquity() / AccountMargin()) * 100);Start by debugging the lines that have a user variable or function in the divisor. There aren't many.
thanks phy,
but do you have an idea why the expert is working on demo on all pairs, but live it is writing zero devide?
so i tried and found the problem, but now i don´t know how to solve it
if i change variable c for eg to 3 there is no zero devide,
double MaxLoss2 = AccountBalance()/100*MaxLossPercent2; double b=(iATR(Symbol(),PERIOD_H1,750,0))/Point; double a=(iATR(Symbol(),PERIOD_M15,750,0))/Point; double c=(3);
but changing var a or b doesn´´t help, do you have an idea why the ea can´t calculate var c?
double MaxLoss2 = AccountBalance()/100*MaxLossPercent2; double b=(iATR(Symbol(),PERIOD_H1,750,0))*Point; double a=(iATR(Symbol(),PERIOD_M15,750,0))*Point; double c=(b/a);
If changing 'a' doesn't help, it can calculate 'c', and the value is zero.
Put in some Print statements to see what is going on.
yes phy c is zero, and this is caused thru iatr which returns zero!
But i think this is a very funny thing because the atr of 15min or 1hour is never zero.
any idea?
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
hi @ all
Zero devide occurs in live trading on all pair but not on gbp/usd, and not on demo on all pairs.
has anybody an idea?
thanks in advance