Răsfoiți Sursa

ticket # 1483

add target lines and set tp of buy and sell
AhtashamShahzad3 2 ani în urmă
părinte
comite
1f87ee94c9
2 a modificat fișierele cu 210 adăugiri și 157 ștergeri
  1. BIN
      BOS_CHOCH.ex5
  2. 210 157
      BOS_CHOCH.mq5

BIN
BOS_CHOCH.ex5


+ 210 - 157
BOS_CHOCH.mq5

@@ -83,6 +83,8 @@ datetime time_of_candle = 0.0;
 datetime time_to_place_trade = 0.0;
 datetime high_index_time;
 datetime low_index_time;
+datetime tp_date_time_buy;
+datetime tp_date_time_sell;
 
 
 double hi;
@@ -601,6 +603,7 @@ void choch(int i)
          // -----------------------------------------------------------------------------------------------------------------------------------------------------------
          int chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
          chock_index++;
+         datetime ti = choch_index_time;
 
          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);
@@ -613,10 +616,17 @@ void choch(int i)
             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)));
+         //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 error ",GetLastError());
+            Print("object created from uptrend to downtrend ");
            }
+
          ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
          ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
 
@@ -636,7 +646,7 @@ void choch(int i)
          Print("from where you end ",chock_index1);
 
          bool condition_not_match = false;
-         for(int p=chock_index - 1 ; p >=chock_index1; p--)
+         for(int p=chock_index - 2 ; p >=chock_index1; p--)
            {
             if(iLow(Symbol(),PERIOD_CURRENT,p) < HIGH)
               {
@@ -648,6 +658,7 @@ void choch(int i)
            {
             HIGH = 0.0;
             LOW = 0.0;
+            tp_date_time_sell = 0.0;
             Print("TArget line deleted");
             condition_not_match = false;
 
@@ -662,6 +673,10 @@ void choch(int i)
               }
 
            }
+         else
+           {
+            tp_date_time_sell = ti;
+           }
 
          //-------------------------------------------------------------------------------------------------------------------------------------------------------------------
          if(signal == "sell")
@@ -776,69 +791,69 @@ void choch(int i)
 
          // 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");
-              }
-
-           }
+         //         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")
@@ -976,6 +991,7 @@ void choch(int i)
          //--------------------------------------------------------------------------------------------------------------------------------------------------------------------
          int chock_index = iBarShift(Symbol(), PERIOD_CURRENT, choch_index_time, false);
          chock_index++;
+         datetime t = choch_index_time;
 
          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);
@@ -989,7 +1005,19 @@ void choch(int i)
             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));
+
+         //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 ");
+           }
+
+
          ObjectSetInteger(0,"target line",OBJPROP_RAY_RIGHT,true);
          ObjectSetInteger(0,"target line",OBJPROP_COLOR,clrGreen);
 
@@ -1007,10 +1035,16 @@ void choch(int i)
          Print("from where you end ",chock_index1);
 
          bool condition_not_match = false;
-         for(int p=chock_index -  1 ; p >=chock_index1; p--)
+         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;
               }
            }
@@ -1020,6 +1054,7 @@ void choch(int i)
             Print("line target deleted :");
             HIGH = 0.0;
             LOW = 0.0;
+            tp_date_time_buy = 0.0;
             condition_not_match = false;
 
             if(object_find("target line") > 0)
@@ -1033,6 +1068,10 @@ void choch(int i)
               }
 
            }
+         else
+           {
+            tp_date_time_buy = t;
+           }
 
          //------------------------------------------------------------------------------------------------------------------------------------------------------------------
          if(signal == "buy")
@@ -1147,65 +1186,65 @@ void choch(int i)
 
          // 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");
-              }
-
-           }
+         //         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")
@@ -1775,17 +1814,25 @@ void placeBuyTrade()
    double sell_SL = 0,sell_Tp = 0, openPrice = 0,buySL = 0, buyTp = 0;
    openPrice = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
    double Ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
+
    int  ch = iBarShift(Symbol(), PERIOD_CURRENT,choch_index_time,false);  // get high of chock index
    buySL = iLow(Symbol(),PERIOD_CURRENT,ch) - stoploss *10 * Point();
+
+   int tp = iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
+
+   buyTp = iLow(Symbol(),PERIOD_CURRENT,tp);
+
+   // tp_date_time_buy = 0.0;
 //
 //   if(stoploss != 0)
 //     {
 //      buySL = Ask - (stoploss *10* Point());
 //     }
-   if(takeProfit != 0)
-     {
-      buyTp = Ask + (takeProfit *10* Point());
-     }
+//if(takeProfit != 0)
+//  {
+//   buyTp = Ask + (takeProfit *10* Point());
+//  }
+
    double distance = (Ask - buySL)/Point();
    if(trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,getlot(distance),Ask,buySL,buyTp,"Buy Trade Placed"))
      {
@@ -1855,17 +1902,23 @@ void placeSellTrade()
    double sell_SL = 0,sell_Tp = 0, openPrice = 0, buySL = 0, buyTp = 0;
    openPrice = SymbolInfoDouble(Symbol(),SYMBOL_BID);
    double Bid = SymbolInfoDouble(Symbol(),SYMBOL_BID);
+
    int  ch = iBarShift(Symbol(), PERIOD_CURRENT,choch_index_time,false);  // get high of chock index
    sell_SL = iHigh(Symbol(),PERIOD_CURRENT,ch) + stoploss *10 * Point();
+
+   int tp = iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_sell,false);
+   sell_Tp = iLow(Symbol(),PERIOD_CURRENT,tp);
+
+   //tp_date_time_sell = 0.0;
    double distance = (sell_SL - Bid)/Point();
 //if(stoploss != 0)
 //  {
 //   sell_SL = Bid + (stoploss *10* Point());
 //  }
-   if(takeProfit != 0)
-     {
-      sell_Tp = Bid - (takeProfit *10* Point());
-     }
+//if(takeProfit != 0)
+//  {
+//   sell_Tp = Bid - (takeProfit *10* Point());
+//  }
 
 
    if(trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,getlot(distance),Bid,sell_SL,sell_Tp,"Sell Trade Placed"))
@@ -1895,27 +1948,27 @@ int OnInit()
 
    int idx = 0;
 
-   int user_input_index = iBarShift(Symbol(), PERIOD_CURRENT,inpTime, false);
-   if(ObjectCreate(0,"line",OBJ_VLINE,0,inpTime,iLow(Symbol(),PERIOD_CURRENT,user_input_index)))
+//int user_input_index = iBarShift(Symbol(), PERIOD_CURRENT,inpTime, false);
+//if(ObjectCreate(0,"line",OBJ_VLINE,0,inpTime,iLow(Symbol(),PERIOD_CURRENT,user_input_index)))
+//  {
+//   Print("vertical line created on chart : ");
+//  }
+//else
+//  {
+//   Print("error in creating line : ");
+//  }
+
+
+   int user_input_index = iBarShift(Symbol(), PERIOD_CURRENT, D'2021.09.01 15:30:27', false);
+   if(ObjectCreate(0,"line",OBJ_VLINE,0,D'2021.09.01 15:30:27',iLow(Symbol(),PERIOD_CURRENT,user_input_index)))
      {
-      Print("vertical line created on chart : ");
+      Print("object created on chart : ");
      }
    else
      {
-      Print("error in creating line : ");
+      Print("object not created : ");
      }
 
-
-   //int user_input_index = iBarShift(Symbol(), PERIOD_CURRENT, D'2022.09.01 15:30:27', false);
-   //if(ObjectCreate(0,"line",OBJ_VLINE,0,D'2022.09.01 15:30:27',iLow(Symbol(),PERIOD_CURRENT,user_input_index)))
-   //  {
-   //   Print("object created on chart : ");
-   //  }
-   //else
-   //  {
-   //   Print("object not created : ");
-   //  }
-
    object_find(object_name);
    if(object_find(object_name) == true)
      {
@@ -2072,7 +2125,7 @@ void OnTick()
                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);
 
                if(reversalMax > iLow(Symbol(),PERIOD_CURRENT,1)
-                  && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(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();
@@ -2092,7 +2145,7 @@ void OnTick()
 
               }
 
-            if(od_1[m].EntryCon == 1 && iTime(Symbol(),PERIOD_CURRENT,1) == 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*/)
+            if(od_1[m].EntryCon == 1 && iTime(Symbol(),PERIOD_CURRENT,1) == 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*/)
               {
 
                //Print("i am in enrtry condition 1 : ");
@@ -2112,7 +2165,7 @@ 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))
+                  && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1) && tp_date_time_sell != 0.0 )
                  {
                   placeSellTrade();
                   remove_value_from_structure();
@@ -2133,7 +2186,7 @@ void OnTick()
 
             // second condition match
 
-            if(od_1[m].EntryCon == 2 && TimeCurrent() > od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "buy" && od_1[m].Time_of_candle_For_trade != 0 /*&& HIGH != 0 && LOW != 0*/)
+            if(od_1[m].EntryCon == 2 && TimeCurrent() > od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "buy" && od_1[m].Time_of_candle_For_trade != 0  /*&& HIGH != 0 && LOW != 0*/)
               {
                // Print("time is greater and signal is buy ",TimeCurrent());
                // Print("i am in enrtry condition 1 : ");
@@ -2155,7 +2208,7 @@ void OnTick()
                if(value_close_high(close_index) == true)
                  {
                   if(iClose(Symbol(),PERIOD_CURRENT,close_index) > iLow(Symbol(),PERIOD_CURRENT,1)
-                     && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(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();
@@ -2176,7 +2229,7 @@ void OnTick()
 
               }
 
-            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*/)
+            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*/)
               {
 
                // Print("time is greater and signal is sell ",TimeCurrent());
@@ -2197,7 +2250,7 @@ void OnTick()
                if(value_close_low(close_index) == true)
                  {
                   if(iClose(Symbol(),PERIOD_CURRENT,close_index) < iHigh(Symbol(),PERIOD_CURRENT,1)
-                     && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(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();