Zero divide Error - even after declaring fix

 

Hi 

I have a Zero Divide Error popping up in 2 areas of my code base, the just of the calculation is to calculate gradient. 

The differences between the Run (x axis, int bar position) is calculated and when that difference is 0, the algorithm automatically changes the variable to 1. 

However I am still getting the Zero Divide error.

***

 
Robocop01 :

Hi 

I have a Zero Divide Error popping up in 2 areas of my code base, the just of the calculation is to calculate gradient. 

The differences between the Run (x axis, int bar position) is calculated and when that difference is 0, the algorithm automatically changes the variable to 1. 

However I am still getting the Zero Divide error.

***

Insert the code correctly: use the button Code

 
Robocop01:

Hi 

I have a Zero Divide Error popping up in 2 areas of my code base, the just of the calculation is to calculate gradient. 

The differences between the Run (x axis, int bar position) is calculated and when that difference is 0, the algorithm automatically changes the variable to 1. 

However I am still getting the Zero Divide error.

***

Hello ,try and compile the project file that contains the library as well (not just the library) and what mr Karputov said

 
//Arrays and Initialization
//1M
   double HighPos1MArray[5];
   for(e1M=0; e1M<4; e1M++)
     {
      HighPos1MArray[0]= High1M2;
      HighPos1MArray[1]= High1M5;
      HighPos1MArray[2]= High1M13;
      HighPos1MArray[3]= High1M34;
      HighPos1MArray[4]= High1M55;
      double DeltaHghPos1MArray[4];
      for(v1M=0; v1M<3; v1M++)
        {
         //DeltaHghPos1MArray[v1M]=((HighPos1MArray[0])-(HighPos1MArray[v1M+1]));
         DeltaHghPos1MArray[0]= ((HighPos1MArray[1]-HighPos1MArray[0]));
         if (DeltaHghPos1MArray[0]==0)
            {
             DeltaHghPos1MArray[0]=1;
            }
         DeltaHghPos1MArray[1]= ((HighPos1MArray[2]-HighPos1MArray[0]));
         if (DeltaHghPos1MArray[1]==0)
            {
             DeltaHghPos1MArray[1]=1;
            }
         DeltaHghPos1MArray[2]= ((HighPos1MArray[3]-HighPos1MArray[0]));
         if (DeltaHghPos1MArray[2]==0)
            {
             DeltaHghPos1MArray[2]=1;
            }
         DeltaHghPos1MArray[3]= ((HighPos1MArray[4]-HighPos1MArray[0]));
         if (DeltaHghPos1MArray[3]==0)
            {
             DeltaHghPos1MArray[3]=1;
            }
        }
     }
   double LowPos1MArray[5];
   for(f1M=0; f1M<4; f1M++)-
     {
      LowPos1MArray[0]= Low1M2;
      LowPos1MArray[1]= Low1M5;
      LowPos1MArray[2]= Low1M13;
      LowPos1MArray[3]= Low1M34;
      LowPos1MArray[4]= Low1M55;
      double DeltaLowPos1MArray[4];
      for(u1M=0; u1M<3; u1M++)
        {
//         (LowPos1MArray[1])-(f1M+1);
         DeltaLowPos1MArray[0]= ((LowPos1MArray[1]-LowPos1MArray[0]));
         if (DeltaLowPos1MArray[0]==0)
            {
             DeltaLowPos1MArray[0]=1;
            }
         DeltaLowPos1MArray[1]= ((LowPos1MArray[2]-LowPos1MArray[0]));
         if (DeltaLowPos1MArray[1]==0)
            {
             DeltaLowPos1MArray[1]=1;
            }
         DeltaLowPos1MArray[2]= ((LowPos1MArray[3]-LowPos1MArray[0]));
         if (DeltaLowPos1MArray[2]==0)
            {
             DeltaLowPos1MArray[2]=1;
            }
         DeltaLowPos1MArray[3]= ((LowPos1MArray[4]-LowPos1MArray[0]));
         if (DeltaLowPos1MArray[3]==0)
            {
             DeltaLowPos1MArray[3]=1;
            }
        }
     }
   double HighPrc1MArray[5];
   for(i1M=0; i1M<4; i1M++)
     {
      HighPrc1MArray[0]= High1M2Prc;
      HighPrc1MArray[1]= High1M5Prc;
      HighPrc1MArray[2]= High1M13Prc;
      HighPrc1MArray[3]= High1M34Prc;
      HighPrc1MArray[4]= High1M55Prc;
      double DeltaHghPrc1MArray[4];
      for(z1M=0; z1M<3; z1M++)
        {
//         (HghPrc1MArray[1])-(i1M+1);

         DeltaHghPrc1MArray[0]= ((HighPrc1MArray[1]-HighPrc1MArray[0]));
         DeltaHghPrc1MArray[1]= ((HighPrc1MArray[2]-HighPrc1MArray[0]));
         DeltaHghPrc1MArray[2]= ((HighPrc1MArray[3]-HighPrc1MArray[0]));
         DeltaHghPrc1MArray[3]= ((HighPrc1MArray[4]-HighPrc1MArray[0]));
        }
     }
   double HighMFI1MArray[5];
   for(b1M=0; b1M<4; b1M++)
     {
      HighMFI1MArray[0]= High1MMFI2;
      HighMFI1MArray[1]= High1MMFI5;
      HighMFI1MArray[2]= High1MMFI13;
      HighMFI1MArray[3]= High1MMFI34;
      HighMFI1MArray[4]= High1MMFI55;
      double DeltaHghMFI1MArray[4];
      for(y1M=0; y1M<3; y1M++)
        {
//         (HighMFI1MArray[1])-(b1M+1);
         DeltaHghMFI1MArray[0]= ((HighMFI1MArray[1]-HighMFI1MArray[0]));
         DeltaHghMFI1MArray[1]= ((HighMFI1MArray[2]-HighMFI1MArray[0]));
         DeltaHghMFI1MArray[2]= ((HighMFI1MArray[3]-HighMFI1MArray[0]));
         DeltaHghMFI1MArray[3]= ((HighMFI1MArray[4]-HighMFI1MArray[0]));
        }
     }
   double LowPrc1MArray[5];
   for(c1M=0; c1M<4; c1M++)
     {
      LowPrc1MArray[0]= Low1M2Prc;
      LowPrc1MArray[1]= Low1M5Prc;
      LowPrc1MArray[2]= Low1M13Prc;
      LowPrc1MArray[3]= Low1M34Prc;
      LowPrc1MArray[4]= Low1M55Prc;
      double DeltaLowPrc1MArray[4];
      for(x1M=0; x1M<3; x1M++)
        {
//         (LowPrc1MArray[1])-(c1M+1);
         DeltaLowPrc1MArray[0]= ((LowPrc1MArray[1]-LowPrc1MArray[0]));
         DeltaLowPrc1MArray[1]= ((LowPrc1MArray[2]-LowPrc1MArray[0]));
         DeltaLowPrc1MArray[2]= ((LowPrc1MArray[3]-LowPrc1MArray[0]));
         DeltaLowPrc1MArray[3]= ((LowPrc1MArray[4]-LowPrc1MArray[0]));
        }
     }
   double LowMFI1MArray[5];
   for(d1W=0; d1W<4; d1W++)
     {
      LowMFI1MArray[0]= Low1MMFI2;
      LowMFI1MArray[1]= Low1MMFI5;
      LowMFI1MArray[2]= Low1MMFI13;
      LowMFI1MArray[3]= Low1MMFI34;
      LowMFI1MArray[4]= Low1MMFI55;
      double DeltaLowMFI1MArray[4];
      for(w1M=0; w1M<3; w1M++)
        {
//         (LowMFI1MArray[1])-(d1M+1);
         DeltaLowMFI1MArray[0]= ((LowMFI1MArray[1]-LowMFI1MArray[0]));
         DeltaLowMFI1MArray[1]= ((LowMFI1MArray[2]-LowMFI1MArray[0]));
         DeltaLowMFI1MArray[2]= ((LowMFI1MArray[3]-LowMFI1MArray[0]));
         DeltaLowMFI1MArray[3]= ((LowMFI1MArray[4]-LowMFI1MArray[0]));
        }
     }
   double DeltaHghPrc1MArray[4];
   double DeltaHghPos1MArray[4];
   double HighPriceSlope1MArray[4];
   for(ContainerHighPriceSlope1MArray=0; ContainerHighPriceSlope1MArray<3; ContainerHighPriceSlope1MArray++)
     {
      HighPriceSlope1MArray[0]=DeltaHghPrc1MArray[0]/DeltaHghPos1MArray[0];
      HighPriceSlope1MArray[1]=DeltaHghPrc1MArray[1]/DeltaHghPos1MArray[1];
      HighPriceSlope1MArray[2]=DeltaHghPrc1MArray[2]/DeltaHghPos1MArray[2];
      HighPriceSlope1MArray[3]=DeltaHghPrc1MArray[3]/DeltaHghPos1MArray[3];
     }
   double DeltaHghMFI1MArray[4];
   double HighMFISlope1MArray[4];
   for(ContainerHighMFISlope1MArray=0; ContainerHighMFISlope1MArray<3; ContainerHighMFISlope1MArray++)
     {
      HighMFISlope1MArray[0]=(DeltaHghMFI1MArray[0]/DeltaHghPos1MArray[0]);
      HighMFISlope1MArray[1]=(DeltaHghMFI1MArray[1]/DeltaHghPos1MArray[1]);
      HighMFISlope1MArray[2]=(DeltaHghMFI1MArray[2]/DeltaHghPos1MArray[2]);
      HighMFISlope1MArray[3]=(DeltaHghMFI1MArray[3]/DeltaHghPos1MArray[3]);
     }
   double DeltaLowPrc1MArray[4];
   double DeltaLowPos1MArray[4];
   double LowPriceSlope1MArray[4];
   for(ContainerLowPriceSlope1MArray=0; ContainerLowPriceSlope1MArray<3; ContainerLowPriceSlope1MArray++)
     {
      LowPriceSlope1MArray[0]=DeltaLowPrc1MArray[0]/DeltaLowPos1MArray[0];
      LowPriceSlope1MArray[1]=DeltaLowPrc1MArray[1]/DeltaLowPos1MArray[1];
      LowPriceSlope1MArray[2]=DeltaLowPrc1MArray[2]/DeltaLowPos1MArray[2];
      LowPriceSlope1MArray[3]=DeltaLowPrc1MArray[3]/DeltaLowPos1MArray[3];
     }

Thank you for the input 


the full file is a bit large, please find the attached as requested 

 

Robocop01
:

 

   double DeltaHghPrc1MArray[4];
   double DeltaHghPos1MArray[4];
   double HighPriceSlope1MArray[4];
   for(ContainerHighPriceSlope1MArray=0; ContainerHighPriceSlope1MArray<3; ContainerHighPriceSlope1MArray++)
     {
      HighPriceSlope1MArray[0]=DeltaHghPrc1MArray[0]/DeltaHghPos1MArray[0];
      HighPriceSlope1MArray[1]=DeltaHghPrc1MArray[1]/DeltaHghPos1MArray[1];
      HighPriceSlope1MArray[2]=DeltaHghPrc1MArray[2]/DeltaHghPos1MArray[2];
      HighPriceSlope1MArray[3]=DeltaHghPrc1MArray[3]/DeltaHghPos1MArray[3];
     }
   double DeltaHghMFI1MArray[4];
   double HighMFISlope1MArray[4];
   for(ContainerHighMFISlope1MArray=0; ContainerHighMFISlope1MArray<3; ContainerHighMFISlope1MArray++)
     {
      HighMFISlope1MArray[0]=(DeltaHghMFI1MArray[0]/DeltaHghPos1MArray[0]);
      HighMFISlope1MArray[1]=(DeltaHghMFI1MArray[1]/DeltaHghPos1MArray[1]);
      HighMFISlope1MArray[2]=(DeltaHghMFI1MArray[2]/DeltaHghPos1MArray[2]);
      HighMFISlope1MArray[3]=(DeltaHghMFI1MArray[3]/DeltaHghPos1MArray[3]);
     }
   double DeltaLowPrc1MArray[4];
   double DeltaLowPos1MArray[4];
   double LowPriceSlope1MArray[4];
   for(ContainerLowPriceSlope1MArray=0; ContainerLowPriceSlope1MArray<3; ContainerLowPriceSlope1MArray++)
     {
      LowPriceSlope1MArray[0]=DeltaLowPrc1MArray[0]/DeltaLowPos1MArray[0];
      LowPriceSlope1MArray[1]=DeltaLowPrc1MArray[1]/DeltaLowPos1MArray[1];
      LowPriceSlope1MArray[2]=DeltaLowPrc1MArray[2]/DeltaLowPos1MArray[2];
      LowPriceSlope1MArray[3]=DeltaLowPrc1MArray[3]/DeltaLowPos1MArray[3];


you are declaring arrays then using them to divide with before you assign any value to them..



 
Paul Anscombe:

you are declaring arrays then using them to divide with before you assign any value to them..



Apologies Paul, the allocations are done further up. 


I'll just post the full source 

//Monthly
//Highs
   double High1M2 = iHighest(_Symbol,PERIOD_MN1,2);
   double High1M5 = iHighest(_Symbol, PERIOD_MN1,5);
   double High1M13 = iHighest(_Symbol, PERIOD_MN1,Container13);
   double High1M34 = iHighest(_Symbol, PERIOD_MN1,Container34);
   double High1M55= iHighest(_Symbol, PERIOD_MN1,Container55);
   double High1M2Prc = iHigh(_Symbol, PERIOD_MN1, High1M2);
   double High1M5Prc = iHigh(_Symbol, PERIOD_MN1, High1M5);
   double High1M13Prc = iHigh(_Symbol, PERIOD_MN1, High1M13);
   double High1M34Prc = iHigh(_Symbol, PERIOD_MN1, High1M34);
   double High1M55Prc = iHigh(_Symbol, PERIOD_MN1, High1M55);
   double High1MMFI2 = iMFI(_Symbol, PERIOD_MN1,2, High1M2);
   double High1MMFI5 = iMFI(_Symbol, PERIOD_MN1,5, High1M5);
   double High1MMFI13 = iMFI(_Symbol, PERIOD_MN1, 13, High1M13);
   double High1MMFI34 = iMFI(_Symbol, PERIOD_MN1,34, High1M34);
   double High1MMFI55 = iMFI(_Symbol, PERIOD_MN1,89, High1M55);
//Lows
   double Low1M2 = iLowest(_Symbol, PERIOD_W1,2);
   double Low1M5 = iLowest(_Symbol, PERIOD_W1,5);
   double Low1M13 = iLowest(_Symbol, PERIOD_W1,Container13);
   double Low1M34 = iLowest(_Symbol, PERIOD_W1,Container34);
   double Low1M55= iLowest(_Symbol, PERIOD_W1,Container55);
   double Low1M2Prc = iLow(_Symbol, PERIOD_W1, Low1M2);
   double Low1M5Prc = iLow(_Symbol, PERIOD_W1, Low1M5);
   double Low1M13Prc = iLow(_Symbol, PERIOD_W1, Low1M13);
   double Low1M34Prc = iLow(_Symbol, PERIOD_W1, Low1M34);
   double Low1M55Prc = iLow(_Symbol, PERIOD_W1, Low1M55);
   double Low1MMFI2 = iMFI(_Symbol, PERIOD_W1,13, Low1M2);
   double Low1MMFI5 = iMFI(_Symbol, PERIOD_W1, 13, Low1M5);
   double Low1MMFI13 = iMFI(_Symbol, PERIOD_W1, 13, Low1M13);
   double Low1MMFI34 = iMFI(_Symbol, PERIOD_W1, 13, Low1M34);
   double Low1MMFI55 = iMFI(_Symbol, PERIOD_W1, 13, Low1M55);
 
It seems like the code exceeds the 65000 character limit
 
Robocop01:

Apologies Paul, the allocations are done further up. 


No, the arrays I higlighted are being declared but not assigned before you use them.

You need to put values into the arrays before doing the calculations.

The extra source you just posted does not have those arrays in, and even if it did you are making a new declaration so it would override any previous declaration or fail to compile if they were in the same function.

double DeltaLowPrc1MArray[4];   // this is a declaration the array will be created without assigned values or worse random values.

DeltaLowPrc1MArray[0] = 55.55;  // this is an assignment and places a value into the array in index position [0]


 

Ok I see that makes sense, so I would have to perform these calculations privately and directly after declaring the variables that make up the calculation?

If I define these variables privately, how do I call the info on a higher level for further data processing (Straight line projection after calculation of the regression)?

 
Robocop01:

Ok I see that makes sense, so I would have to perform these calculations privately and directly after declaring the variables that make up the calculation?

If I define these variables privately, how do I call the info on a higher level for further data processing (Straight line projection after calculation of the regression)?

I do not know what you mean by privately.

All you have to do is ensure that any variables you use in calculations have been assigned values before you do the calculation

You should also check for zero divide errors before doing the divide

The checks a trading robot must pass before publication in the Market
The checks a trading robot must pass before publication in the Market
  • www.mql5.com
Before any product is published in the Market, it must undergo compulsory preliminary checks in order to ensure a uniform quality standard. This article considers the most frequent errors made by developers in their technical indicators and trading robots. An also shows how to self-test a product before sending it to the Market.
 

I changed the data structures from using Arrays to individual variables.

I have no compiler errors or any errors when running the code in MT4 however the code does not seem to produce any outputs when testing.

There are more pieces to the code running the same procedures on different timeframes.

I understand the programmed trade conditions might not present themselves, but not receiving any other outputs does not seem right?

void OnTick()
  {
   //ObjectCreate(LongSwap, "LongSwap", OBJ_TEXT, 0,0,0);
   //ObjectCreate(ShortSwap, "ShortSwap", OBJ_TEXT, 0,0,0);
   //ObjectCreate(TickValue, "TickValue", OBJ_TEXT, 0,0,0);
   //ObjectCreate(SpreadValue, "SpreadValue", OBJ_TEXT, 0,0,0);
   double MFI4h = iMFI(_Symbol, PERIOD_H4, 13, 1);
   double MFI1d = iMFI(_Symbol, PERIOD_D1, 13, 1);
   double MFI1w = iMFI(_Symbol, PERIOD_W1, 13, 1);
   double MFI2w = iMFI(_Symbol, PERIOD_W1, 13, 2);
   double Vol4h1 = iMFI(_Symbol, PERIOD_H4, 13, 1);
   double Vol4h2 = iMFI(_Symbol, PERIOD_H4, 13, 2);
   double Vol4h3 = iMFI(_Symbol, PERIOD_H4, 13, 3);
   double Closew1 = iClose(_Symbol, PERIOD_W1, 1);
   double Highw1 = iHigh(_Symbol, PERIOD_W1, 1);
   double Loww1 = iLow(_Symbol, PERIOD_W1, 1);
   double ATRLine = iATR(_Symbol, NULL, 21, 0);
   double PLine1 = iMA(_Symbol, NULL,89,0,0,0,1);
   double SLine1 = iMA(_Symbol, NULL,233,0,0,0,1);
   double Lead = iMA(_Symbol, NULL, 2, 0, 3, 0, 1);
   double AccBal = AccountBalance();
   int TotalOrder = OrdersTotal();
   double DeltaMFI1d = (MFI2w - MFI1w);
   double PivotPoint;
   double R1;
   double S1;
   PivotPoint = ((Closew1 + Highw1 + Loww1) / 3);
   S1 = ((PivotPoint * 2) - Highw1);
   R1 = ((PivotPoint * 2) - Loww1);
//Monthly 
//Highs   
   
   double High1M2 = iHighest(_Symbol,PERIOD_MN1,2);
   double High1M5= iHighest(_Symbol, PERIOD_MN1,5);
   double High1M13 = iHighest(_Symbol, PERIOD_MN1,Container13);
   double High1M34 = iHighest(_Symbol, PERIOD_MN1,Container34);
   double High1M55 = iHighest(_Symbol, PERIOD_MN1,Container55);
   double High1M2Prc = iHigh(_Symbol, PERIOD_MN1, High1M2);
   double High1M5Prc = iHigh(_Symbol, PERIOD_MN1, High1M5);
   double High1M13Prc = iHigh(_Symbol, PERIOD_MN1, High1M13);
   double High1M34Prc = iHigh(_Symbol, PERIOD_MN1, High1M34);
   double High1M55Prc = iHigh(_Symbol, PERIOD_MN1, High1M55);
   double High1MMFI2 = iMFI(_Symbol, PERIOD_MN1,8, High1M2);
   double High1MMFI5 = iMFI(_Symbol, PERIOD_MN1,8, High1M5);
   double High1MMFI13 = iMFI(_Symbol, PERIOD_MN1, 8, High1M13);
   double High1MMFI34 = iMFI(_Symbol, PERIOD_MN1,8, High1M34);
   double High1MMFI55 = iMFI(_Symbol, PERIOD_MN1,8, High1M55);
//Lows
   double Low1M2 = iLowest(_Symbol, PERIOD_W1,2);
   double Low1M5 = iLowest(_Symbol, PERIOD_W1,5);
   double Low1M13 = iLowest(_Symbol, PERIOD_W1,Container13);
   double Low1M34 = iLowest(_Symbol, PERIOD_W1,Container34);
   double Low1M55 = iLowest(_Symbol, PERIOD_W1,Container55);
   double Low1M2Prc = iLow(_Symbol, PERIOD_W1, Low1M2);
   double Low1M5Prc = iLow(_Symbol, PERIOD_W1, Low1M5);
   double Low1M13Prc = iLow(_Symbol, PERIOD_W1, Low1M13);
   double Low1M34Prc = iLow(_Symbol, PERIOD_W1, Low1M34);
   double Low1M55Prc = iLow(_Symbol, PERIOD_W1, Low1M55);
   double Low1MMFI2 = iMFI(_Symbol, PERIOD_W1,8, Low1M2);
   double Low1MMFI5 = iMFI(_Symbol, PERIOD_W1, 8, Low1M5);
   double Low1MMFI13 = iMFI(_Symbol, PERIOD_W1, 8, Low1M13);
   double Low1MMFI34 = iMFI(_Symbol, PERIOD_W1, 8, Low1M34);
   double Low1MMFI55 = iMFI(_Symbol, PERIOD_W1, 8, Low1M55);
//Weekly
//Highs
   double High1W2 = iHighest(_Symbol,PERIOD_W1,2);
   double High1W5 = iHighest(_Symbol, PERIOD_W1,5);
   double High1W13 = iHighest(_Symbol, PERIOD_W1,Container13);
   double High1W34 = iHighest(_Symbol, PERIOD_W1,Container34);
   double High1W89 = iHighest(_Symbol, PERIOD_W1,Container89);
   double High1W2Prc = iHigh(_Symbol, PERIOD_W1, High1W2);
   double High1W5Prc = iHigh(_Symbol, PERIOD_W1, High1W5);
   double High1W13Prc = iHigh(_Symbol, PERIOD_W1, High1W13);
   double High1W34Prc = iHigh(_Symbol, PERIOD_W1, High1W34);
   double High1W89Prc = iHigh(_Symbol, PERIOD_W1, High1W89);
   double High1WMFI2 = iMFI(_Symbol, PERIOD_W1,8, High1W2);
   double High1WMFI5 = iMFI(_Symbol, PERIOD_W1,8, High1W5);
   double High1WMFI13 = iMFI(_Symbol, PERIOD_W1, 8, High1W13);
   double High1WMFI34 = iMFI(_Symbol, PERIOD_W1,8, High1W34);
   double High1WMFI89 = iMFI(_Symbol, PERIOD_W1,8, High1W89);
//Lows
   double Low1W2 = iLowest(_Symbol, PERIOD_W1,2);
   double Low1W5 = iLowest(_Symbol, PERIOD_W1,5);
   double Low1W13 = iLowest(_Symbol, PERIOD_W1,Container13);
   double Low1W34 = iLowest(_Symbol, PERIOD_W1,Container34);
   double Low1W89 = iLowest(_Symbol, PERIOD_W1,Container89);
   double Low1W2Prc = iLow(_Symbol, PERIOD_W1, Low1W2);
   double Low1W5Prc = iLow(_Symbol, PERIOD_W1, Low1W5);
   double Low1W13Prc = iLow(_Symbol, PERIOD_W1, Low1W13);
   double Low1W34Prc = iLow(_Symbol, PERIOD_W1, Low1W34);
   double Low1W89Prc = iLow(_Symbol, PERIOD_W1, Low1W89);
   double Low1WMFI2 = iMFI(_Symbol, PERIOD_W1,8, Low1W2);
   double Low1WMFI5 = iMFI(_Symbol, PERIOD_W1, 8, Low1W5);
   double Low1WMFI13 = iMFI(_Symbol, PERIOD_W1, 8, Low1W13);
   double Low1WMFI34 = iMFI(_Symbol, PERIOD_W1, 8, Low1W34);
   double Low1WMFI89 = iMFI(_Symbol, PERIOD_W1, 8, Low1W89);

//4H
//Highs
   double High4h2 = iHighest(_Symbol, PERIOD_H4,2);
   double High4h5 = iHighest(_Symbol, PERIOD_H4,5);
   double High4h13 = iHighest(_Symbol, PERIOD_H4,Container13);
   double High4h34 = iHighest(_Symbol, PERIOD_H4,Container34);
   double High4h89 = iHighest(_Symbol, PERIOD_H4,Container89);
   double High4h2Prc = iHigh(_Symbol, PERIOD_H4, High4h2);
   double High4h5Prc = iHigh(_Symbol, PERIOD_H4, High4h5);
   double High4h13Prc = iHigh(_Symbol, PERIOD_H4, High4h13);
   double High4h34Prc = iHigh(_Symbol, PERIOD_H4, High4h34);
   double High4h89Prc = iHigh(_Symbol, PERIOD_H4, High4h89);
   double High4hMFI2 = iMFI(_Symbol, PERIOD_H4,8, High4h2);
   double High4hMFI5 = iMFI(_Symbol, PERIOD_H4,8, High4h5);
   double High4hMFI13 = iMFI(_Symbol, PERIOD_H4, 8, High4h13);
   double High4hMFI34 = iMFI(_Symbol, PERIOD_H4,8, High4h34);
   double High4hMFI89 = iMFI(_Symbol, PERIOD_H4,88, High4h89);
//Lows
   double Low4h2 = iLowest(_Symbol, PERIOD_H4,2);
   double Low4h5 = iLowest(_Symbol, PERIOD_H4,5);
   double Low4h13 = iLowest(_Symbol, PERIOD_H4,Container13);
   double Low4h34 = iLowest(_Symbol, PERIOD_H4,Container34);
   double Low4h89 = iLowest(_Symbol, PERIOD_H4,Container89);
   double Low4h2Prc = iLow(_Symbol, PERIOD_H4, Low4h2);
   double Low4h5Prc = iLow(_Symbol, PERIOD_H4, Low4h5);
   double Low4h13Prc = iLow(_Symbol, PERIOD_H4, Low4h13);
   double Low4h34Prc = iLow(_Symbol, PERIOD_H4, Low4h34);
   double Low4h89Prc = iLow(_Symbol, PERIOD_H4, Low4h89);
   double Low4hMFI2 = iMFI(_Symbol, PERIOD_H4,8, Low4h2);
   double Low4hMFI5 = iMFI(_Symbol, PERIOD_H4, 8, Low4h5);
   double Low4hMFI13 = iMFI(_Symbol, PERIOD_H4, 8, Low4h13);
   double Low4hMFI34 = iMFI(_Symbol, PERIOD_H4, 8, Low4h34);
   double Low4hMFI89 = iMFI(_Symbol, PERIOD_H4, 8, Low4h89);
//15Min
//Highs
   double High15min2 = iHighest(_Symbol, PERIOD_M15,2);
   double High15min5 = iHighest(_Symbol, PERIOD_M15,5);
   double High15min13 = iHighest(_Symbol, PERIOD_M15,Container13);
   double High15min34 = iHighest(_Symbol, PERIOD_M15,Container34);
   double High15min89 = iHighest(_Symbol, PERIOD_M15,Container89);
   double High15min2Prc = iHigh(_Symbol, PERIOD_M15, High15min2);
   double High15min5Prc = iHigh(_Symbol, PERIOD_M15, High15min5);
   double High15min13Prc = iHigh(_Symbol, PERIOD_M15, High15min13);
   double High15min34Prc = iHigh(_Symbol, PERIOD_M15, High15min34);
   double High15min89Prc = iHigh(_Symbol, PERIOD_M15, High15min89);
   double High15minMFI2 = iMFI(_Symbol, PERIOD_M15,8, High15min2);
   double High15minMFI5 = iMFI(_Symbol, PERIOD_M15,8, High15min5);
   double High15minMFI13 = iMFI(_Symbol, PERIOD_M15, 8, High15min13);
   double High15minMFI34 = iMFI(_Symbol, PERIOD_M15,8, High15min34);
   double High15minMFI89 = iMFI(_Symbol, PERIOD_M15,8, High15min89);
//Lows
   double Low15min2 = iLowest(_Symbol, PERIOD_M15,2);
   double Low15min5 = iLowest(_Symbol, PERIOD_M15,5);
   double Low15min13 = iLowest(_Symbol, PERIOD_M15,Container13);
   double Low15min34 = iLowest(_Symbol, PERIOD_M15,Container34);
   double Low15min89 = iLowest(_Symbol, PERIOD_M15,Container89);
   double Low15min2Prc = iLow(_Symbol, PERIOD_M15, Low15min2);
   double Low15min5Prc = iLow(_Symbol, PERIOD_M15, Low15min5);
   double Low15min13Prc = iLow(_Symbol, PERIOD_M15, Low15min13);
   double Low15min34Prc = iLow(_Symbol, PERIOD_M15, Low15min34);
   double Low15min89Prc = iLow(_Symbol, PERIOD_M15, Low15min89);
   double Low15minMFI2 = iMFI(_Symbol, PERIOD_M15,8, Low15min2);
   double Low15minMFI5 = iMFI(_Symbol, PERIOD_M15, 8, Low15min5);
   double Low15minMFI13 = iMFI(_Symbol, PERIOD_M15, 8, Low15min13);
   double Low15minMFI34 = iMFI(_Symbol, PERIOD_M15, 8, Low15min34);
   double Low15minMFI89 = iMFI(_Symbol, PERIOD_M15, 8, Low15min89);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////Delta Calculations/////////////////////////////////////////////////////////////////////////
//1M
//High
   double DeltaHghPos1M = (High1M2-High1M5);
      if (DeltaHghPos1M==0)
      {
       DeltaHghPos1M = 1;
      }
   double DeltaHghPos2M = (High1M5-High1M13);
      if (DeltaHghPos2M==0)
      {
       DeltaHghPos2M = 1;
      }
   double DeltaHghPos3M = (High1M13-High1M34);
      if (DeltaHghPos3M==0)
      {
       DeltaHghPos3M = 1;
      }
   double DeltaHghPos4M = (High1M34-High1M55);
      if (DeltaHghPos4M==0)
      {
       DeltaHghPos4M = 1;
      }

   double DeltaHghPrc1M = (High1M2Prc - High1M5Prc);
   double DeltaHghPrc2M = (High1M5Prc - High1M13Prc);
   double DeltaHghPrc3M = (High1M13Prc - High1M34Prc);
   double DeltaHghPrc4M = (High1M34Prc - High1M55Prc);
   
   double DeltaHghMFI1M = (High1MMFI2 - High1MMFI5);
   double DeltaHghMFI2M = (High1MMFI5 - High1MMFI13);
   double DeltaHghMFI3M = (High1MMFI13 - High1MMFI34);
   double DeltaHghMFI4M = (High1MMFI34 - High1MMFI55);
//Low 
   double DeltaLowPos1M = (Low1M2-Low1M5);
      if (DeltaLowPos1M==0)
      {
       DeltaLowPos1M = 1;
      }
   double DeltaLowPos2M = (Low1M5-Low1M13);
      if (DeltaLowPos2M==0)
      {
       DeltaLowPos2M = 1;
      }
   double DeltaLowPos3M = (Low1M13-Low1M34);
      if (DeltaLowPos3M==0)
      {
       DeltaLowPos3M = 1;
      }
   double DeltaLowPos4M = (Low1M34-Low1M55);
      if (DeltaLowPos4M==0)
      {
       DeltaLowPos4M = 1;
      }

   double DeltaLowPrc1M = (Low1M2Prc - Low1M5Prc);
   double DeltaLowPrc2M = (Low1M5Prc - Low1M13Prc);
   double DeltaLowPrc3M = (Low1M13Prc - Low1M34Prc);
   double DeltaLowPrc4M = (Low1M34Prc - Low1M55Prc);
   
   double DeltaLowMFI1M = (Low1MMFI2 - Low1MMFI5);
   double DeltaLowMFI2M = (Low1MMFI5 - Low1MMFI13);
   double DeltaLowMFI3M = (Low1MMFI13 - Low1MMFI34);
   double DeltaLowMFI4M = (Low1MMFI34 - Low1MMFI55);
//W
//High
   double DeltaHghPos1W = (High1W2-High1W5);
      if (DeltaHghPos1W==0)
      {
       DeltaHghPos1W = 1;
      }
   double DeltaHghPos2W = (High1W5-High1W13);
      if (DeltaHghPos2W==0)
      {
       DeltaHghPos2W = 1;
      }
   double DeltaHghPos3W = (High1W13-High1W34);
      if (DeltaHghPos3W==0)
      {
       DeltaHghPos3W = 1;
      }
   double DeltaHghPos4W = (High1W34-High1W89);
      if (DeltaHghPos4W==0)
      {
       DeltaHghPos4W = 1;
      }

   double DeltaHghPrc1W = (High1W2Prc - High1W5Prc);
   double DeltaHghPrc2W = (High1W5Prc - High1W13Prc);
   double DeltaHghPrc3W = (High1W13Prc - High1W34Prc);
   double DeltaHghPrc4W = (High1W34Prc - High1W89Prc);
   
   double DeltaHghMFI1W = (High1WMFI2 - High1WMFI5);
   double DeltaHghMFI2W = (High1WMFI5 - High1WMFI13);
   double DeltaHghMFI3W = (High1WMFI13 - High1WMFI34);
   double DeltaHghMFI4W = (High1WMFI34 - High1WMFI89);   
//Low 
   double DeltaLowPos1W = (Low1W2-Low1W5);
      if (DeltaLowPos1W==0)
      {
       DeltaLowPos1W = 1;
      }
   double DeltaLowPos2W = (Low1W5-Low1W13);
      if (DeltaLowPos2W==0)
      {
       DeltaLowPos2W = 1;
      }
   double DeltaLowPos3W = (Low1W13-Low1W34);
      if (DeltaLowPos3W==0)
      {
       DeltaLowPos3W = 1;
      }
   double DeltaLowPos4W = (Low1W34-Low1W89);
      if (DeltaLowPos4W==0)
      {
       DeltaLowPos4W = 1;
      }

   double DeltaLowPrc1W = (Low1W2Prc - Low1W5Prc);
   double DeltaLowPrc2W = (Low1W5Prc - Low1W13Prc);
   double DeltaLowPrc3W = (Low1W13Prc - Low1W34Prc);
   double DeltaLowPrc4W = (Low1W34Prc - Low1W89Prc);
   
   double DeltaLowMFI1W = (Low1WMFI2 - Low1WMFI5);
   double DeltaLowMFI2W = (Low1WMFI5 - Low1WMFI13);
   double DeltaLowMFI3W = (Low1WMFI13 - Low1WMFI34);
   double DeltaLowMFI4W = (Low1WMFI34 - Low1WMFI89);
//4H
//High
   double DeltaHghPos4h1 = (High4h2-High4h5);
      if (DeltaHghPos4h1==0)
      {
       DeltaHghPos4h1 = 1;
      }
   double DeltaHghPos4h2 = (High4h5-High4h13);
      if (DeltaHghPos4h2==0)
      {
       DeltaHghPos4h2 = 1;
      }
   double DeltaHghPos4h3 = (High4h13-High4h34);
      if (DeltaHghPos4h3==0)
      {
       DeltaHghPos4h3 = 1;
      }
   double DeltaHghPos4h4 = (High4h34-High4h89);
      if (DeltaHghPos4h4==0)
      {
       DeltaHghPos4h4 = 1;
      }

   double DeltaHghPrc4h1 = (High4h2Prc - High4h5Prc);
   double DeltaHghPrc4h2 = (High4h5Prc - High4h13Prc);
   double DeltaHghPrc4h3 = (High4h13Prc - High4h34Prc);
   double DeltaHghPrc4h4 = (High4h34Prc - High4h89Prc);
   
   double DeltaHghMFI4h1 = (High4hMFI2 - High4hMFI5);
   double DeltaHghMFI4h2 = (High4hMFI5 - High4hMFI13);
   double DeltaHghMFI4h3 = (High4hMFI13 - High4hMFI34);
   double DeltaHghMFI4h4 = (High4hMFI34 - High4hMFI89); 
//Low 
   double DeltaLowPos4h1 = (Low4h2-Low4h5);
      if (DeltaLowPos4h1==0)
      {
       DeltaLowPos4h1 = 1;
      }
   double DeltaLowPos4h2 = (Low4h5-Low4h13);
      if (DeltaLowPos4h2==0)
      {
       DeltaLowPos4h2 = 1;
      }
   double DeltaLowPos4h3 = (Low4h13-Low4h34);
      if (DeltaLowPos4h3==0)
      {
       DeltaLowPos4h3 = 1;
      }
   double DeltaLowPos4h4 = (Low4h34-Low4h89);
      if (DeltaLowPos4h4==0)
      {
       DeltaLowPos4h4 = 1;
      }

   double DeltaLowPrc4h1 = (Low4h2Prc - Low4h5Prc);
   double DeltaLowPrc4h2 = (Low4h5Prc - Low4h13Prc);
   double DeltaLowPrc4h3 = (Low4h13Prc - Low4h34Prc);
   double DeltaLowPrc4h4 = (Low4h34Prc - Low4h89Prc);
   
   double DeltaLowMFI4h1 = (Low4hMFI2 - Low4hMFI5);
   double DeltaLowMFI4h2 = (Low4hMFI5 - Low4hMFI13);
   double DeltaLowMFI4h3 = (Low4hMFI13 - Low4hMFI34);
   double DeltaLowMFI4h4 = (Low4hMFI34 - Low4hMFI89);
//15min
//High
   double DeltaHghPos15min1 = (High15min2-High15min5);
      if (DeltaHghPos15min1==0)
      {
       DeltaHghPos15min1 = 1;
      }
   double DeltaHghPos15min2 = (High15min5-High15min13);
      if (DeltaHghPos15min2==0)
      {
       DeltaHghPos15min2 = 1;
      }
   double DeltaHghPos15min3 = (High15min13-High15min34);
      if (DeltaHghPos15min3==0)
      {
       DeltaHghPos15min3 = 1;
      }
   double DeltaHghPos15min4 = (High15min34-High15min89);
      if (DeltaHghPos15min4==0)
      {
       DeltaHghPos15min4 = 1;
      }

   double DeltaHghPrc15min1 = (High15min2Prc - High15min5Prc);
   double DeltaHghPrc15min2 = (High15min5Prc - High15min13Prc);
   double DeltaHghPrc15min3 = (High15min13Prc - High15min34Prc);
   double DeltaHghPrc15min4 = (High15min34Prc - High15min89Prc);
   
   double DeltaHghMFI15min1 = (High15minMFI2 - High15minMFI5);
   double DeltaHghMFI15min2 = (High15minMFI5 - High15minMFI13);
   double DeltaHghMFI15min3 = (High15minMFI13 - High15minMFI34);
   double DeltaHghMFI15min4 = (High15minMFI34 - High15minMFI89);
//Low 
   double DeltaLowPos15min1 = (Low15min2-Low15min5);
      if (DeltaLowPos15min1==0)
      {
       DeltaLowPos15min1 = 1;
      }
   double DeltaLowPos15min2 = (Low15min5-Low15min13);
      if (DeltaLowPos15min2==0)
      {
       DeltaLowPos15min2 = 1;
      }
   double DeltaLowPos15min3 = (Low15min13-Low15min34);
      if (DeltaLowPos15min3==0)
      {
       DeltaLowPos15min3 = 1;
      }
   double DeltaLowPos15min4 = (Low15min34-Low15min89);
      if (DeltaLowPos15min4==0)
      {
       DeltaLowPos15min4 = 1;
      }

   double DeltaLowPrc15min1 = (Low15min2Prc - Low15min5Prc);
   double DeltaLowPrc15min2 = (Low15min5Prc - Low15min13Prc);
   double DeltaLowPrc15min3 = (Low15min13Prc - Low15min34Prc);
   double DeltaLowPrc15min4 = (Low15min34Prc - Low15min89Prc);
   
   double DeltaLowMFI15min1 = (Low15minMFI2 - Low15minMFI5);
   double DeltaLowMFI15min2 = (Low15minMFI5 - Low15minMFI13);
   double DeltaLowMFI15min3 = (Low15minMFI13 - Low15minMFI34);
   double DeltaLowMFI15min4 = (Low15minMFI34 - Low15minMFI89);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////Slope Calculation///////////////////////////////////////////////////////////////////////////////////

//Monthly 
//Highs
   double HighPriceSlope1M1 = (DeltaHghPrc1M/DeltaHghPos1M);
   double HighPriceSlope1M2 = (DeltaHghPrc2M/DeltaHghPos2M);
   double HighPriceSlope1M3 = (DeltaHghPrc3M/DeltaHghPos3M);
   double HighPriceSlope1M4 = (DeltaHghPrc4M/DeltaHghPos4M);
   
//Lows
   double LowPriceSlope1M1 = (DeltaLowPrc1M/DeltaLowPos1M);
   double LowPriceSlope1M2 = (DeltaLowPrc2M/DeltaLowPos2M);
   double LowPriceSlope1M3 = (DeltaLowPrc3M/DeltaLowPos3M);
   double LowPriceSlope1M4 = (DeltaLowPrc4M/DeltaLowPos4M);  
 
//Weekly 
//Highs
   double HighPriceSlope1W1 = (DeltaHghPrc1W/DeltaHghPos1W);
   double HighPriceSlope1W2 = (DeltaHghPrc2W/DeltaHghPos2W);
   double HighPriceSlope1W3 = (DeltaHghPrc3W/DeltaHghPos3W);
   double HighPriceSlope1W4 = (DeltaHghPrc4W/DeltaHghPos4W);

//Lows
   double LowPriceSlope1W1 = (DeltaLowPrc1W/DeltaLowPos1W);
   double LowPriceSlope1W2 = (DeltaLowPrc2W/DeltaLowPos2W);
   double LowPriceSlope1W3 = (DeltaLowPrc3W/DeltaLowPos3W);
   double LowPriceSlope1W4 = (DeltaLowPrc4W/DeltaLowPos4W);
   
//4H
//Highs
   double HighPriceSlope4h1 = (DeltaHghPrc4h1/DeltaHghPos4h1);
   double HighPriceSlope4h2 = (DeltaHghPrc4h2/DeltaHghPos4h2);
   double HighPriceSlope4h3 = (DeltaHghPrc4h3/DeltaHghPos4h3);
   double HighPriceSlope4h4 = (DeltaHghPrc4h4/DeltaHghPos4h4);

//Lows
   double LowPriceSlope4h1 = (DeltaLowPrc4h1/DeltaLowPos4h1);
   double LowPriceSlope4h2 = (DeltaLowPrc4h2/DeltaLowPos4h2);
   double LowPriceSlope4h3 = (DeltaLowPrc4h3/DeltaLowPos4h3);
   double LowPriceSlope4h4 = (DeltaLowPrc4h4/DeltaLowPos4h4);
 
//15min
//Highs 
   double HighPriceSlope15min1 = (DeltaHghPrc15min1/DeltaHghPos15min1);
   double HighPriceSlope15min2 = (DeltaHghPrc15min2/DeltaHghPos15min2);
   double HighPriceSlope15min3 = (DeltaHghPrc15min3/DeltaHghPos15min3);
   double HighPriceSlope15min4 = (DeltaHghPrc15min4/DeltaHghPos15min4);

//Lows
   double LowPriceSlope15min1 = (DeltaLowPrc15min1/DeltaLowPos15min1);
   double LowPriceSlope15min2 = (DeltaLowPrc15min2/DeltaLowPos15min2);
   double LowPriceSlope15min3 = (DeltaLowPrc15min3/DeltaLowPos15min3);
   double LowPriceSlope15min4 = (DeltaLowPrc15min4/DeltaLowPos15min4); 
   
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////Convergence analysis////////////////////////////////////////////////////////////////////////////////////
 
   if(HighPriceSlope1M1 > 0 && HighMFISlope1M1 < 0 || HighPriceSlope1M1 < 0 && HighMFISlope1M1 > 0 ||
      HighPriceSlope1M2 > 0 && HighMFISlope1M2 < 0 || HighPriceSlope1M2 < 0 && HighMFISlope1M2 > 0 ||
      HighPriceSlope1M3 > 0 && HighMFISlope1M3 < 0 || HighPriceSlope1M3 < 0 && HighMFISlope1M3 > 0 ||
      HighPriceSlope1M4 > 0 && HighMFISlope1M4 < 0 || HighPriceSlope1M4 < 0 && HighMFISlope1M4 > 0)
     {
      High1MConvergence = True;
      if (High1MConvergence == True)
         {       
          double SLAnchor= Ask-((High1M2Prc+High1M5Prc)/2);
          double TPAnchor= (Ask-((Low1M2Prc+ Low1M5Prc)/2))*(-1);
          double TP382Proj= ((TPAnchor-0.0015)*0.382)* Bid *1000;
          double TradeCost= ((SLAnchor+SpreadValue)*Bid)+(LotCap*3);
          if (TP382Proj>TradeCost)
            {
             OrderSend(_Symbol, 1, LotCap, Bid, 0, (Bid- SLAnchor), (Bid+TPAnchor),"High1MCon", 0, 0, clrGreen);

            }
          else (Print("Inadequet win reward"));
          
         }
     }
   if(LowPriceSlope1M1 > 0 && LowMFISlope1M1 < 0 || LowPriceSlope1M1 < 0 && LowMFISlope1M1 > 0 ||
      LowPriceSlope1M2 > 0 && LowMFISlope1M2 < 0 || LowPriceSlope1M2 < 0 && LowMFISlope1M2 > 0 ||
      LowPriceSlope1M3 > 0 && LowMFISlope1M3 < 0 || LowPriceSlope1M3 < 0 && LowMFISlope1M3 > 0 ||
      LowPriceSlope1M4 > 0 && LowMFISlope1M4 < 0 || LowPriceSlope1M4 < 0 && LowMFISlope1M4 > 0 )
     {
      Low1MConvergence = True;
      if (Low1MConvergence == True)
         {       
          double SLAnchor= Bid-((Low1M2Prc+Low1M5Prc)/2);
          double TPAnchor= (Bid-((High1M2Prc+ High1M5Prc)/2))*(-1);
          double TP382Proj= ((TPAnchor-0.0015)*0.382)* Bid *1000;
          double TradeCost= ((SLAnchor+SpreadValue)*Bid)+(LotCap*3);
          if (TP382Proj>TradeCost)
            {
             OrderSend(_Symbol, 0, LotCap, Bid, 0, (Bid- SLAnchor), (Bid+TPAnchor),"Low1MCon", 0, 0, clrGreen);

            }
          else (Print("Inadequet win reward"));
          
         }
     }
/////////////////////////////////////////////////////////////////////////////Weekly////////////////////////////////////////////////////////////////
   if(HighPriceSlope1W1 > 0 && HighMFISlope1W1 < 0 || HighPriceSlope1W1 < 0 && HighMFISlope1W1 > 0 ||
      HighPriceSlope1W2 > 0 && HighMFISlope1W2 < 0 || HighPriceSlope1W2 < 0 && HighMFISlope1W2 > 0 ||
      HighPriceSlope1W3 > 0 && HighMFISlope1W3 < 0 || HighPriceSlope1W3 < 0 && HighMFISlope1W3 > 0 ||
      HighPriceSlope1W4 > 0 && HighMFISlope1W4 < 0 || HighPriceSlope1W4 < 0 && HighMFISlope1W4 > 0)
     {
      High1WConvergence = True;
      if (High1WConvergence == True)
         {       
          double SLAnchor= Ask-((High1W2Prc+High1W5Prc)/2);
          double TPAnchor= (Ask-((Low1W2Prc+ Low1W5Prc)/2))*(-1);
          double TP382Proj= ((TPAnchor-0.0015)*0.382)* Bid *1000;
          double TradeCost= ((SLAnchor+SpreadValue)*Bid)+(LotCap*3);
          if (TP382Proj>TradeCost)
            {
             OrderSend(_Symbol, 1, LotCap, Bid, 0, (Bid- SLAnchor), (Bid+TPAnchor),"High1WCon", 0, 0, clrGreen);

            }
Reason: