Procházet zdrojové kódy

ticket # 1585

Issues in inside bar function is resolved.
AhtashamShahzad3 před 2 roky
rodič
revize
40a2203e29
2 změnil soubory, kde provedl 62 přidání a 9 odebrání
  1. binární
      BOS_CHOCH.ex5
  2. 62 9
      BOS_CHOCH.mq5

binární
BOS_CHOCH.ex5


+ 62 - 9
BOS_CHOCH.mq5

@@ -85,6 +85,7 @@ datetime high_index_time;
 datetime low_index_time;
 datetime tp_date_time_buy;
 datetime tp_date_time_sell;
+datetime Last_bos_before_reversal;
 
 
 double hi;
@@ -310,7 +311,8 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
-            
+            tp_date_time_buy = 0.0;
+
             Print("target lines deleted due to in bar");
             if(object_find("target line") > 0)
               {
@@ -329,7 +331,7 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
-            
+            tp_date_time_buy = 0.0;
             Print("target lines deleted due to in bar");
             if(object_find("target line") > 0)
               {
@@ -398,7 +400,7 @@ void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
-            
+            tp_date_time_buy = 0.0;
             Print("target lines deleted due to in bar");
             if(object_find("target line") > 0)
               {
@@ -416,7 +418,7 @@ void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
-            
+            tp_date_time_buy = 0.0;
             Print("target lines deleted due to in bar");
             if(object_find("target line") > 0)
               {
@@ -459,6 +461,53 @@ void Entry_Action_2_down(int Store_bos_last_index, int i,int diff)
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
+void Check_Inside_bar(int inex)
+  {
+
+   for(int j=inex+1; j>=1; 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))
+           {
+            tp_date_time_sell = 0.0;
+            tp_date_time_buy  = 0.0;
+            Print("Target line deleted due to in bar ");
+            if(object_find("target line") > 0)
+              {
+               ObjectDelete(0,"target line");
+              }
+
+            if(object_find("target line1") > 0)
+              {
+               ObjectDelete(0,"target line1");
+              }
+           }
+        }
+
+      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))
+           {
+            tp_date_time_sell = 0.0;
+            tp_date_time_buy  = 0.0;
+            Print("Target line deleted due to in bar ");
+            if(object_find("target line") > 0)
+              {
+               ObjectDelete(0,"target line");
+              }
+
+            if(object_find("target line1") > 0)
+              {
+               ObjectDelete(0,"target line1");
+              }
+           }
+        }
+     }
+  }
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
 void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
   {
 
@@ -473,6 +522,7 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
+            tp_date_time_sell = 0.0;
             Print("Target line deleted due to in bar ");
             if(object_find("target line") > 0)
               {
@@ -491,6 +541,7 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
+            tp_date_time_sell = 0.0;
             Print("Target line deleted due to in bar ");
             if(object_find("target line") > 0)
               {
@@ -559,6 +610,7 @@ void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
+            tp_date_time_sell = 0.0;
             Print("Target line deleted due to in bar ");
             if(object_find("target line") > 0)
               {
@@ -577,6 +629,7 @@ void Entry_Action_2_up(int Store_bos_last_index, int i,int diff)
         {
          if(iHigh(Symbol(),PERIOD_CURRENT,j) > iOpen(Symbol(),PERIOD_CURRENT,j-1)  && iLow(Symbol(),PERIOD_CURRENT,j) < iClose(Symbol(),PERIOD_CURRENT,j-1))
            {
+            tp_date_time_sell = 0.0;
             Print("Target line deleted due to in bar ");
             if(object_find("target line") > 0)
               {
@@ -1834,7 +1887,7 @@ void OnTick()
 
                if(od_1[m].EntryCon == 2  && od_1[m].Signal == "buy")
                  {
-                  if(trend == "uptrend" )
+                  if(trend == "uptrend")
                     {
                      double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_buy,false);
                      for(int p=ib-2; p >= 1; p--)
@@ -1861,7 +1914,7 @@ 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);
-
+                  Check_Inside_bar(reversal_indexx);
                   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);
 
@@ -1911,10 +1964,10 @@ void OnTick()
 
                if(od_1[m].EntryCon == 2 && od_1[m].Signal == "sell")
                  {
-                 // Print("hi ----- entry condition 2 trend lines in sell case downtrend "," tp_date_time_sell",tp_date_time_sell);
+                  // Print("hi ----- entry condition 2 trend lines in sell case downtrend "," tp_date_time_sell",tp_date_time_sell);
                   if(trend == "downtrend")
                     {
-                   //  Print("there ----- entry condition 2 trend lines in sell case downtrend "," tp_date_time_sell",tp_date_time_sell);
+                     //  Print("there ----- entry condition 2 trend lines in sell case downtrend "," tp_date_time_sell",tp_date_time_sell);
                      double ib =iBarShift(Symbol(), PERIOD_CURRENT,tp_date_time_sell,false);
                      for(int p=ib-2; p >= 1; p--)
                        {
@@ -1942,7 +1995,7 @@ 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);
-
+                  Check_Inside_bar(reversal_indexx);
                   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_con1 = false;