Selaa lähdekoodia

Ticket # 1585

AhtashamShahzad3 2 vuotta sitten
vanhempi
sitoutus
dd050e2b5f
2 muutettua tiedostoa jossa 257 lisäystä ja 344 poistoa
  1. BIN
      BOS_CHOCH.ex5
  2. 257 344
      BOS_CHOCH.mq5

BIN
BOS_CHOCH.ex5


+ 257 - 344
BOS_CHOCH.mq5

@@ -299,16 +299,33 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
   {
 
 
-
-//Print("bullish found at index ",j);
-
    ind = Store_bos_last_index +1;     // reversal candle index
    reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
+   bool addtional_condition = false;
+
+   for(int j=Store_bos_last_index-1; j>i+2; j--)
+     {
+      if(checkCandle(j) == "Bearish" && checkCandle(j-1) == "Bearish")
+        {
+         if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
+           {
+            addtional_condition = true;
+           }
+        }
+
+      if(checkCandle(j) == "Bullish" && checkCandle(j-1) == "Bullish")
+        {
+         if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
+           {
+            addtional_condition = true;
+           }
+        }
+     }
 
 
    Print("condition satisfied in downtrend buy trade :  ",check_values_less_than_choch_high(ind,i));
 
-   if(check_values_less_than_choch_high(ind,i) == true)
+   if(check_values_less_than_choch_high(ind,i) == true && addtional_condition == false)
      {
       if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
         {
@@ -358,9 +375,9 @@ void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
 
    Print("condition satisfied in downtrend buy trade :  ",check_values_less_than_choch_high1(ind,i));
 
-   if(check_values_less_than_choch_high(ind,i) == true)
+//if(check_values_less_than_choch_high(ind,i) == true)
      {
-      if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
+      // if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
         {
          signal = "buy";
          time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
@@ -400,12 +417,31 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
    ind = Store_bos_last_index +1;     // reversal candle index
    reversal_bar_time = iTime(Symbol(),PERIOD_CURRENT,ind);
 
+   bool addtional_condition = false;
 
+   for(int j=Store_bos_last_index-1; j>i+2; j--)
+     {
+      if(checkCandle(j) == "Bearish" && checkCandle(j-1) == "Bearish")
+        {
+         if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
+           {
+            addtional_condition = true;
+           }
+        }
+
+      if(checkCandle(j) == "Bullish" && checkCandle(j-1) == "Bullish")
+        {
+         if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
+           {
+            addtional_condition = true;
+           }
+        }
+     }
 
 
    Print("condition satisfied in uptrend sell trade :  ",check_values_less_than_choch_low(ind,i));
 
-   if(check_values_less_than_choch_low(ind,i) == true)
+   if(check_values_less_than_choch_low(ind,i) == true && addtional_condition == false)
      {
       if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
         {
@@ -454,9 +490,9 @@ void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
 
    Print("condition satisfied in uptrend sell trade :  ",check_values_less_than_choch_low(ind,i));
 
-   if(check_values_less_than_choch_low1(ind,i) == true)
+// if(check_values_less_than_choch_low1(ind,i) == true)
      {
-      if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
+      //   if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
         {
          signal = "sell";
          time_of_candle = iTime(Symbol(),PERIOD_CURRENT,i);
@@ -608,20 +644,12 @@ void choch(int i)
          HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index);  // save high and low of the chock prev index to compare
          LOW  = iLow(Symbol(),PERIOD_CURRENT,chock_index);
 
-         Print("from where you start ",chock_index);
-
 
          if(object_find("target line") > 0)
            {
             ObjectDelete(0,"target line");
            }
 
-         //if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
-         //  {
-         //   Print("time at which error accur ",iTime(Symbol(),PERIOD_CURRENT,i));
-         //   Print("object error ",GetLastError());
-         //  }
-
          if(ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
            {
             Print("object created from uptrend to downtrend ");
@@ -643,7 +671,6 @@ void choch(int i)
          choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
 
          int chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         Print("from where you end ",chock_index1);
 
          bool condition_not_match = false;
          for(int p=chock_index - 2 ; p > chock_index1; p--)
@@ -659,7 +686,7 @@ void choch(int i)
             HIGH = 0.0;
             LOW = 0.0;
             tp_date_time_sell = 0.0;
-            Print("TArget line deleted");
+            Print("Target line deleted in choch");
             condition_not_match = false;
 
             if(object_find("target line") > 0)
@@ -696,41 +723,49 @@ void choch(int i)
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 2;
+                     edate.min  = edate.min + 1;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M5:
                   current_time_frame_string = "5 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 10;
+                     edate.min  = edate.min + 5;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M15:
                   current_time_frame_string = "15 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 30;
+                     edate.min  = edate.min + 15;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M30:
                   current_time_frame_string = "30 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 60;
+                     edate.min  = edate.min + 30;
                      edate.sec  = 0;
                     }
+
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
+
                   break;
                case PERIOD_H1:
                   current_time_frame_string = "1 hour";
-
-
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = edate.hour + 1;
@@ -739,15 +774,21 @@ void choch(int i)
                     }
 
                   time_to_place_trade = StructToTime(edate);
-
-                  // Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
                   store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
 
-                  //Print("choch_index_time ",choch_index_time);
-                  //Print("reversal_bar_time ",reversal_bar_time);
-                  //Print("time_of_candle",time_of_candle);
-                  //Print("time_to_place_trade",time_to_place_trade);
-                  //Print("signal is ",signal);
+                  break;
+
+               case PERIOD_H4:
+                  current_time_frame_string = "4 hour";
+                  if(TimeToStruct(time_of_candle,edate))
+                    {
+                     edate.hour = edate.hour + 4;
+                     edate.min  = 0;
+                     edate.sec  = 0;
+                    }
+
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
 
                   break;
 
@@ -756,8 +797,6 @@ void choch(int i)
                   break;
               }
 
-
-            //signal = "";
            }
 
          signal = "";
@@ -789,73 +828,7 @@ void choch(int i)
 
          trend = "downtrend";
 
-         // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
-         // -----------------------------------------------------------------------------------------------------------------------------------------------------------
-         //         chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         //         chock_index++;
-         //
-         //         HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index);  // save high and low of the chock prev index to compare
-         //         LOW  = iLow(Symbol(),PERIOD_CURRENT,chock_index);
-         //
-         //         Print("from where you start ",chock_index);
-         //
-         //
-         //         if(object_find("target line") > 0)
-         //           {
-         //            ObjectDelete(0,"target line");
-         //           }
-         //
-         //         if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
-         //           {
-         //            Print("object error ",GetLastError());
-         //           }
-         //         ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
-         //         ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
-         //
-         //         if(object_find("target line1") > 0)
-         //           {
-         //            ObjectDelete(0,"target line1");
-         //           }
-         //
-         //         ObjectCreate(0,"target line1",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iLow(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iLow(Symbol(),PERIOD_CURRENT,chock_index));
-         //         ObjectSetInteger(0,"target line1",OBJPROP_RAY_RIGHT,true);
-         //         ObjectSetInteger(0,"target line1",OBJPROP_COLOR,clrGreen);
-         //
-         //
-         //         choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
-         //
-         //         chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         //         Print("from where you end ",chock_index1);
-         //
-         //         condition_not_match = false;
-         //         for(int p=chock_index - 1 ; p >=chock_index1; p--)
-         //           {
-         //            if(iLow(Symbol(),PERIOD_CURRENT,p) < HIGH)
-         //              {
-         //               condition_not_match = true;
-         //              }
-         //           }
-         //
-         //         if(condition_not_match == true)
-         //           {
-         //            Print("TArget line deleted");
-         //            HIGH = 0.0;
-         //            LOW = 0.0;
-         //            condition_not_match = false;
-         //
-         //            if(object_find("target line") > 0)
-         //              {
-         //               ObjectDelete(0,"target line");
-         //              }
-         //
-         //            if(object_find("target line1") > 0)
-         //              {
-         //               ObjectDelete(0,"target line1");
-         //              }
-         //
-         //           }
 
-         //-------------------------------------------------------------------------------------------------------------------------------------------------------------------
          if(signal == "sell")
            {
             MqlDateTime  edate;
@@ -876,6 +849,8 @@ void choch(int i)
                      edate.min  = edate.min + 2;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M5:
                   current_time_frame_string = "5 minutes";
@@ -885,6 +860,8 @@ void choch(int i)
                      edate.min  = edate.min + 10;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M15:
                   current_time_frame_string = "15 minutes";
@@ -894,6 +871,8 @@ void choch(int i)
                      edate.min  = edate.min + 30;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M30:
                   current_time_frame_string = "30 minutes";
@@ -903,29 +882,34 @@ void choch(int i)
                      edate.min  = edate.min + 60;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_H1:
                   current_time_frame_string = "1 hour";
+                  if(TimeToStruct(time_of_candle,edate))
+                    {
+                     edate.hour = edate.hour + 2;
+                     edate.min  = 0;
+                     edate.sec  = 0;
+                    }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
 
+                  break;
 
+               case PERIOD_H4:
+                  current_time_frame_string = "4 hour";
                   if(TimeToStruct(time_of_candle,edate))
                     {
-                     edate.hour = edate.hour + 2;
+                     edate.hour = edate.hour + 8;
                      edate.min  = 0;
                      edate.sec  = 0;
                     }
 
                   time_to_place_trade = StructToTime(edate);
-
-                  Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
                   store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
 
-                  //Print("choch_index_time ",choch_index_time);
-                  //Print("reversal_bar_time ",reversal_bar_time);
-                  //Print("time_of_candle",time_of_candle);
-                  //Print("time_to_place_trade",time_to_place_trade);
-                  //Print("signal is ",signal);
-
                   break;
 
                default:
@@ -933,8 +917,6 @@ void choch(int i)
                   break;
               }
 
-
-            //signal = "";
            }
 
          signal = "";
@@ -996,9 +978,6 @@ void choch(int i)
          HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index);  // save high and low of the chock prev index to compare
          LOW  = iLow(Symbol(),PERIOD_CURRENT,chock_index);
 
-         Print("from where you start ",chock_index);
-
-
 
          if(object_find("target line") > 0)
            {
@@ -1006,12 +985,6 @@ void choch(int i)
            }
 
 
-         //if(!ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
-         //  {
-         //   Print("time at which error accur in downtrend to uptrend ",iTime(Symbol(),PERIOD_CURRENT,i));
-         //   Print("object error ",GetLastError());
-         //  }
-
          if(ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index)));
            {
             Print("object created from downtrend to uptrend ");
@@ -1032,22 +1005,13 @@ void choch(int i)
 
          choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
          int chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         Print("from where you end ",chock_index1);
 
          bool condition_not_match = false;
-         Print("time of chock_index - 2 is", iTime(Symbol(),PERIOD_CURRENT,chock_index-2));
-         Print("time of current candle is ",iTime(Symbol(),PERIOD_CURRENT,1));
 
          for(int p=chock_index -  2 ; p > chock_index1; p--)
            {
-            // Print("index is ",p," time is ", iTime(Symbol(),PERIOD_CURRENT,p));
-            // Print("high is ", iHigh(Symbol(),PERIOD_CURRENT,chock_index)," low is ",LOW);
-
             if(iHigh(Symbol(),PERIOD_CURRENT,p) > LOW)
               {
-               Print("here the condition is get false ");
-               Print("high is ", iHigh(Symbol(),PERIOD_CURRENT,p)," low is ",LOW);
-               Print("index is ",p," time is ", iTime(Symbol(),PERIOD_CURRENT,p));
                condition_not_match = true;
               }
            }
@@ -1094,41 +1058,47 @@ void choch(int i)
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 2;
+                     edate.min  = edate.min + 1;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M5:
                   current_time_frame_string = "5 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 10;
+                     edate.min  = edate.min + 5;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M15:
                   current_time_frame_string = "15 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 30;
+                     edate.min  = edate.min + 15;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_M30:
                   current_time_frame_string = "30 minutes";
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = 0;
-                     edate.min  = edate.min + 60;
+                     edate.min  = edate.min + 30;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
                case PERIOD_H1:
                   current_time_frame_string = "1 hour";
-
-
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = edate.hour + 1;
@@ -1137,16 +1107,20 @@ void choch(int i)
                     }
 
                   time_to_place_trade = StructToTime(edate);
-
-                  Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
                   store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
+                  break;
 
-                  //Print("choch_index_time ",choch_index_time);
-                  //Print("reversal_bar_time ",reversal_bar_time);
-                  //Print("time_of_candle",time_of_candle);
-                  //Print("time_to_place_trade",time_to_place_trade);
-                  //Print("signal is ",signal);
+               case PERIOD_H4:
+                  current_time_frame_string = "4 hour";
+                  if(TimeToStruct(time_of_candle,edate))
+                    {
+                     edate.hour = edate.hour + 4;
+                     edate.min  = 0;
+                     edate.sec  = 0;
+                    }
 
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,1);
                   break;
 
                default:
@@ -1162,13 +1136,6 @@ void choch(int i)
          Entry_Action_2_down(Store_bos_last_index,i,diff);
          a = 2;
 
-
-
-
-
-
-
-
          high = iHigh(Symbol(),PERIOD_CURRENT,i);
 
          high_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
@@ -1187,69 +1154,6 @@ void choch(int i)
 
          trend = "uptrend";
 
-         // choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
-         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
-         //         chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         //         chock_index++;
-         //
-         //         HIGH = iHigh(Symbol(),PERIOD_CURRENT,chock_index);  // save high and low of the chock prev index to compare
-         //         LOW  = iLow(Symbol(),PERIOD_CURRENT,chock_index);
-         //
-         //         Print("from where you start ",chock_index);
-         //
-         //
-         //
-         //         if(object_find("target line") > 0)
-         //           {
-         //            ObjectDelete(0,"target line");
-         //           }
-         //
-         //         ObjectCreate(0,"target line",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iHigh(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iHigh(Symbol(),PERIOD_CURRENT,chock_index));
-         //         ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
-         //         ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
-         //
-         //         if(object_find("target line1") > 0)
-         //           {
-         //            ObjectDelete(0,"target line1");
-         //           }
-         //
-         //         ObjectCreate(0,"target line1",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,chock_index),iLow(Symbol(),PERIOD_CURRENT,chock_index),iTime(Symbol(),PERIOD_CURRENT,0),iLow(Symbol(),PERIOD_CURRENT,chock_index));
-         //         ObjectSetInteger(0,"target line1",OBJPROP_RAY_RIGHT,true);
-         //         ObjectSetInteger(0,"target line1",OBJPROP_COLOR,clrGreen);
-         //
-         //         choch_index_time = iTime(Symbol(),PERIOD_CURRENT,i);
-         //         chock_index1 = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
-         //         Print("from where you end ",chock_index1);
-         //
-         //         condition_not_match = false;
-         //         for(int p=chock_index - 1 ; p >=chock_index1; p--)
-         //           {
-         //            if(iHigh(Symbol(),PERIOD_CURRENT,p) > LOW)
-         //              {
-         //               condition_not_match = true;
-         //              }
-         //           }
-         //
-         //         if(condition_not_match == true)
-         //           {
-         //            HIGH = 0.0;
-         //            LOW = 0.0;
-         //            Print("line target deleted :");
-         //            condition_not_match = false;
-         //
-         //            if(object_find("target line") > 0)
-         //              {
-         //               ObjectDelete(0,"target line");
-         //              }
-         //
-         //            if(object_find("target line1") > 0)
-         //              {
-         //               ObjectDelete(0,"target line1");
-         //              }
-         //
-         //           }
-
-         //------------------------------------------------------------------------------------------------------------------------------------------------------------------
          if(signal == "buy")
            {
             MqlDateTime  edate;
@@ -1270,6 +1174,8 @@ void choch(int i)
                      edate.min  = edate.min + 2;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M5:
                   current_time_frame_string = "5 minutes";
@@ -1279,6 +1185,8 @@ void choch(int i)
                      edate.min  = edate.min + 10;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M15:
                   current_time_frame_string = "15 minutes";
@@ -1288,6 +1196,8 @@ void choch(int i)
                      edate.min  = edate.min + 30;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_M30:
                   current_time_frame_string = "30 minutes";
@@ -1297,29 +1207,31 @@ void choch(int i)
                      edate.min  = edate.min + 60;
                      edate.sec  = 0;
                     }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
                case PERIOD_H1:
                   current_time_frame_string = "1 hour";
-
-
                   if(TimeToStruct(time_of_candle,edate))
                     {
                      edate.hour = edate.hour + 2;
                      edate.min  = 0;
                      edate.sec  = 0;
                     }
-
                   time_to_place_trade = StructToTime(edate);
-
-                  Print("Time: ",iTime(Symbol(),PERIOD_CURRENT,0));
                   store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
+                  break;
 
-                  //Print("choch_index_time ",choch_index_time);
-                  //Print("reversal_bar_time ",reversal_bar_time);
-                  //Print("time_of_candle",time_of_candle);
-                  //Print("time_to_place_trade",time_to_place_trade);
-                  //Print("signal is ",signal);
-
+               case PERIOD_H4:
+                  current_time_frame_string = "4 hour";
+                  if(TimeToStruct(time_of_candle,edate))
+                    {
+                     edate.hour = edate.hour + 8;
+                     edate.min  = 0;
+                     edate.sec  = 0;
+                    }
+                  time_to_place_trade = StructToTime(edate);
+                  store_value_in_structure(choch_index_time,reversal_bar_time,signal,time_of_candle,time_to_place_trade,2);
                   break;
 
                default:
@@ -2103,70 +2015,6 @@ void OnTick()
    if(NewBar() == true)
      {
 
-   int dx = iBarShift(Symbol(), PERIOD_CURRENT,choch_index_time, false);
-//
-//      double HI = iHigh(Symbol(),PERIOD_CURRENT,dx+1);  // save high and low of the chock prev index to compare
-//      double LO  = iLow(Symbol(),PERIOD_CURRENT,dx+1);
-//      if(trend == "downtrend")
-//        {
-//         for(int p=dx-1; p >= 1; p--)
-//           {
-//            if(iHigh(Symbol(),PERIOD_CURRENT,p) > LO)
-//              {
-//               tp_date_time_sell = 0.0;
-//               Print("high is ",iHigh(Symbol(),PERIOD_CURRENT,p), "and index of high is ",p);
-//               Print("TArget line deleted in on tick "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
-//
-//
-//               if(object_find("target line") > 0)
-//                 {
-//                  ObjectDelete(0,"target line");
-//                 }
-//
-//               if(object_find("target line1") > 0)
-//                 {
-//                  ObjectDelete(0,"target line1");
-//                 }
-//               break;
-//              }
-//           }
-//        }
-//
-//      if(trend == "uptrend")
-//        {
-//         for(int p=dx-1; p >= 1; p--)
-//           {
-//            if(iLow(Symbol(),PERIOD_CURRENT,p) < HI)
-//              {
-//               Print("low is ",LO, "and index of low is ",p);
-//               Print("Target line deleted in on tick "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
-//
-//               tp_date_time_buy = 0.0;
-//
-//               if(object_find("target line") > 0)
-//                 {
-//                  ObjectDelete(0,"target line");
-//                 }
-//
-//               if(object_find("target line1") > 0)
-//                 {
-//                  ObjectDelete(0,"target line1");
-//                 }
-//               break;
-//
-//              }
-//           }
-//
-//        }
-
-
-
-
-
-
-
-
-
       Entry_strategy(1);
 
       // for entry condition candel 1
@@ -2183,24 +2031,37 @@ void OnTick()
                int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
                int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
 
+
                double reversalMax = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) <  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ?  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
+               // bool snd_con = false;
+               for(int i=close_index-1; i>=1; i--) // second condition of updation
+                 {
+                  if(iClose(Symbol(),PERIOD_CURRENT,i) < reversalMax)
+                    {
+                     remove_value_from_structure();
+                    }
+                 }
 
-               if(reversalMax > iLow(Symbol(),PERIOD_CURRENT,1)
-                  && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1)  && tp_date_time_buy != 0.0)
+               // if(iOpen(Symbol(),PERIOD_CURRENT,1) > iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
                  {
-                  Print("<<<<<<<<<<<< Entry 1 >>>>>>>>>");
-                  placeBuyTrade();
-                  remove_value_from_structure();
-                  od_1[m].choch_index_date_time = 0;
-                  od_1[m].Signal == "";
-                  od_1[m].reversal_index_date_time = 0;
-                  od_1[m].choch_index_date_time = 0;
 
-                  signal = "";
-                  Print("buy trade placed  -------------------------------------------------------------");
-                  Print("time at which trade is placed : ",TimeCurrent());
+                  if(reversalMax > iLow(Symbol(),PERIOD_CURRENT,1)
+                     && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1)  && tp_date_time_buy != 0.0)
+                    {
+                     Print("<<<<<<<<<<<< Entry 1 >>>>>>>>>");
+                     placeBuyTrade();
+                     remove_value_from_structure();
+                     od_1[m].choch_index_date_time = 0;
+                     od_1[m].Signal == "";
+                     od_1[m].reversal_index_date_time = 0;
+                     od_1[m].choch_index_date_time = 0;
+
+                     signal = "";
+                     Print("buy trade placed  -------------------------------------------------------------");
+                     Print("time at which trade is placed : ",TimeCurrent());
 
 
+                    }
                  }
 
 
@@ -2215,21 +2076,37 @@ void OnTick()
 
 
                double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) >  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ?  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
-
-               if(reversalMin < iHigh(Symbol(),PERIOD_CURRENT,1)
-                  && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
+               //               double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) >  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ?  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
+               //               bool snd_con = false;
+               //
+               for(int i=close_index-1; i>=1; i--) // second condition of updation
                  {
-                  placeSellTrade();
-                  remove_value_from_structure();
-                  od_1[m].choch_index_date_time = 0;
-                  od_1[m].Signal == "";
-                  od_1[m].reversal_index_date_time = 0;
-                  od_1[m].choch_index_date_time = 0;
-                  signal = "";
-                  Print("sell trade placed  -------------------------------------------------------------");
-                  Print("time at which trade is placed : ",TimeCurrent());
+                  if(iClose(Symbol(),PERIOD_CURRENT,i) > reversalMin)
+                    {
+                      remove_value_from_structure();
+                     //snd_con = true;
+                    }
+                 }
+               //
+               // if(iOpen(Symbol(),PERIOD_CURRENT,1) < iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
+                 {
+
+
+                  if(reversalMin < iHigh(Symbol(),PERIOD_CURRENT,1)
+                     && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
+                    {
+                     placeSellTrade();
+                     remove_value_from_structure();
+                     od_1[m].choch_index_date_time = 0;
+                     od_1[m].Signal == "";
+                     od_1[m].reversal_index_date_time = 0;
+                     od_1[m].choch_index_date_time = 0;
+                     signal = "";
+                     Print("sell trade placed  -------------------------------------------------------------");
+                     Print("time at which trade is placed : ",TimeCurrent());
 
 
+                    }
                  }
 
               }
@@ -2242,9 +2119,10 @@ void OnTick()
               {
                if(trend == "uptrend")
                  {
-                  for(int p=dx-1; p >= 1; p--)
+                  double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
+                  for(int p=ib-2; p >= 1; p--)
                     {
-                     double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
+
                      Print("low of the last choch index is",iLow(Symbol(),PERIOD_CURRENT,ib));
                      if(iHigh(Symbol(),PERIOD_CURRENT,p) > iLow(Symbol(),PERIOD_CURRENT,ib))
                        {
@@ -2275,28 +2153,42 @@ void OnTick()
                int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
                int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
 
-               if(value_close_high(close_index) == true)
+               //bool snd_con = false;
+               //double reversalMax = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) <  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ?  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
+
+               //for(int i=close_index-1; i>=1; i--) // second condition of updation
+               //  {
+               //   if(iClose(Symbol(),PERIOD_CURRENT,i) < reversalMax)
+               //     {
+               //      snd_con = true;
+               //     }
+               //  }
+
+               if(iOpen(Symbol(),PERIOD_CURRENT,1) > iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
                  {
-                  if(iClose(Symbol(),PERIOD_CURRENT,close_index) > iLow(Symbol(),PERIOD_CURRENT,1)
-                     && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
+
+                  if(value_close_high(close_index) == true)
                     {
-                     Print("<<<<<<<<<<<< Entry 2 >>>>>>>>>");
-                     placeBuyTrade();
-                     remove_value_from_structure();
-                     od_1[m].choch_index_date_time = 0;
-                     od_1[m].Signal == "";
-                     od_1[m].reversal_index_date_time = 0;
-                     od_1[m].choch_index_date_time = 0;
+                     if(iClose(Symbol(),PERIOD_CURRENT,close_index) > iLow(Symbol(),PERIOD_CURRENT,1)
+                        && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_buy != 0.0)
+                       {
+                        Print("<<<<<<<<<<<< Entry 2 >>>>>>>>>");
+                        placeBuyTrade();
+                        remove_value_from_structure();
+                        od_1[m].choch_index_date_time = 0;
+                        od_1[m].Signal == "";
+                        od_1[m].reversal_index_date_time = 0;
+                        od_1[m].choch_index_date_time = 0;
 
-                     signal = "";
-                     Print("buy trade placed  -------------------------------------------------------------");
-                     Print("time at which trade is placed : ",TimeCurrent());
+                        signal = "";
+                        Print("buy trade placed  -------------------------------------------------------------");
+                        Print("time at which trade is placed : ",TimeCurrent());
 
 
+                       }
                     }
-                 }
-
 
+                 }
               }
 
             if(od_1[m].EntryCon == 2 && TimeCurrent() > od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "sell" && od_1[m].Time_of_candle_For_trade != 0  /*&& HIGH != 0 && LOW != 0*/)
@@ -2304,14 +2196,14 @@ void OnTick()
 
                if(trend == "downtrend")
                  {
-
-                  for(int p=dx-1; p >= 1; p--)
+                  double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_sell,false);
+                  for(int p=ib-2; p >= 1; p--)
                     {
-                     double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
+
                      Print("high of the last choch index is",iHigh(Symbol(),PERIOD_CURRENT,ib));
                      if(iLow(Symbol(),PERIOD_CURRENT,p) < iHigh(Symbol(),PERIOD_CURRENT,ib))
                        {
-                     //   Print("low is ",LO, "and index of low is ",p);
+                        //   Print("low is ",LO, "and index of low is ",p);
                         Print("Target line deleted in on entry 2 "," at index p", " and time period is ",iTime(Symbol(),PERIOD_CURRENT,p));
 
                         tp_date_time_sell = 0.0;
@@ -2335,22 +2227,37 @@ void OnTick()
                int reversal_indexx = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].reversal_index_date_time,false);
                int close_index = iBarShift(Symbol(), PERIOD_CURRENT,od_1[m].choch_index_date_time,false);
 
-               if(value_close_low(close_index) == true)
+               //               double reversalMin = iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx) >  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) ?  iClose(Symbol(),PERIOD_CURRENT,reversal_indexx) : iOpen(Symbol(),PERIOD_CURRENT,reversal_indexx);
+               //               bool snd_con = false;
+               //
+               //               for(int i=close_index-1; i>=1; i--) // second condition of updation
+               //                 {
+               //                  if(iClose(Symbol(),PERIOD_CURRENT,i) > reversalMin)
+               //                    {
+               //                     snd_con = true;
+               //                    }
+               //                 }
+
+               if(iOpen(Symbol(),PERIOD_CURRENT,1) < iClose(Symbol(),PERIOD_CURRENT,close_index)) // first condition of updation
                  {
-                  if(iClose(Symbol(),PERIOD_CURRENT,close_index) < iHigh(Symbol(),PERIOD_CURRENT,1)
-                     && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell!= 0.0)
+
+                  if(value_close_low(close_index) == true)
                     {
-                     placeSellTrade();
-                     remove_value_from_structure();
-                     od_1[m].choch_index_date_time = 0;
-                     od_1[m].Signal == "";
-                     od_1[m].reversal_index_date_time = 0;
-                     od_1[m].choch_index_date_time = 0;
-                     signal = "";
-                     Print("sell trade placed  -------------------------------------------------------------");
-                     Print("time at which trade is placed : ",TimeCurrent());
+                     if(iClose(Symbol(),PERIOD_CURRENT,close_index) < iHigh(Symbol(),PERIOD_CURRENT,1)
+                        && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0)
+                       {
+                        placeSellTrade();
+                        remove_value_from_structure();
+                        od_1[m].choch_index_date_time = 0;
+                        od_1[m].Signal == "";
+                        od_1[m].reversal_index_date_time = 0;
+                        od_1[m].choch_index_date_time = 0;
+                        signal = "";
+                        Print("sell trade placed  -------------------------------------------------------------");
+                        Print("time at which trade is placed : ",TimeCurrent());
 
 
+                       }
                     }
                  }
 
@@ -2420,3 +2327,9 @@ string checkCandle(int v)  // to check the candle is bullish or bearish
 //+------------------------------------------------------------------+
 
 //+------------------------------------------------------------------+
+
+//+------------------------------------------------------------------+
+
+//+------------------------------------------------------------------+
+
+//+------------------------------------------------------------------+