Bladeren bron

Ticket # 1483 ++

Add entry condition 2 module
AhtashamShahzad3 2 jaren geleden
bovenliggende
commit
0cfc758f63
2 gewijzigde bestanden met toevoegingen van 218 en 6 verwijderingen
  1. BIN
      BOS_CHOCH.ex5
  2. 218 6
      BOS_CHOCH.mq5

BIN
BOS_CHOCH.ex5


+ 218 - 6
BOS_CHOCH.mq5

@@ -34,7 +34,7 @@ struct tradeOrder
 
 tradeOrder od_1[orderNum];
 
-
+input string Entry_condition_1 = "1";   // from here to start -------------------------------------------------------------
 sinput      string                str                    = "<><><><><><> Set Object Name <><><><><><>";
 input       string                object_name            = "line";
 
@@ -325,6 +325,56 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
 
      }
   }
+
+
+
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+void Entry_Action_2_down(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);
+
+
+
+
+   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(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);
+         // Print("Place buy order -----------------------------------------------------------------------: ");
+        }
+
+
+     }
+
+
+
+   ObjectCreate(0,"line14"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iHigh(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,ind));
+   ObjectCreate(0,"line15"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iLow(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,ind));
+
+   ObjectSetInteger(0,"line14"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
+   ObjectSetInteger(0,"line15"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
+
+   ObjectCreate(0,"line16"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iClose(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iClose(Symbol(),PERIOD_CURRENT,ind));
+   ObjectCreate(0,"line17"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iOpen(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iOpen(Symbol(),PERIOD_CURRENT,ind));
+
+   ObjectSetInteger(0,"line16"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
+   ObjectSetInteger(0,"line17"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
+
+   diff = 0;
+
+
+
+  }
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -380,6 +430,56 @@ void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
   }
 
 
+
+
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+void Entry_Action_2_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);
+
+
+
+
+
+   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(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);
+         // Print("Place sell order -----------------------------------------------------------------------: ");
+        }
+
+
+     }
+
+
+
+   ObjectCreate(0,"line10"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iHigh(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,ind));
+   ObjectCreate(0,"line11"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iLow(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,ind));
+
+   ObjectSetInteger(0,"line10"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
+   ObjectSetInteger(0,"line11"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_COLOR,clrBlue);
+
+   ObjectCreate(0,"line12"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iClose(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iClose(Symbol(),PERIOD_CURRENT,ind));
+   ObjectCreate(0,"line13"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,ind),iOpen(Symbol(),PERIOD_CURRENT,ind),iTime(Symbol(),PERIOD_CURRENT,i),iOpen(Symbol(),PERIOD_CURRENT,ind));
+
+   ObjectSetInteger(0,"line12"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
+   ObjectSetInteger(0,"line13"+iTime(Symbol(),PERIOD_CURRENT,ind),OBJPROP_STYLE,STYLE_DOT);
+
+
+
+
+
+
+  }
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -408,7 +508,20 @@ bool check_values_less_than_choch_high(int diff,int i)             // downtrend
 
   }
 
-
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+bool check_values_less_than_choch_high1(int ind,int i)             // downtrend
+  {
+   for(int k=ind; k>i; k--)
+     {
+      if(iHigh(Symbol(),PERIOD_CURRENT,k) > iClose(Symbol(),PERIOD_CURRENT,i))
+        {
+         return false;
+        }
+     }
+   return true;
+  }
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -435,6 +548,21 @@ bool check_values_less_than_choch_low(int diff,int i)             // uptrend
 
   }
 
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+bool check_values_less_than_choch_low1(int ind,int i)             // uptrend
+  {
+   for(int k=ind; k>i; k--)
+     {
+
+      if(iLow(Symbol(),PERIOD_CURRENT,k) < iClose(Symbol(),PERIOD_CURRENT,i))
+        {
+         return false;
+        }
+     }
+   return true;
+  }
 
 //+------------------------------------------------------------------+
 //|                                                                  |
@@ -460,7 +588,9 @@ void choch(int i)
          Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
          int diff1 = Store_bos_last_index - (i);
 
-         Entry_Action_1_up(Store_bos_last_index,i,diff1);
+         // Entry_Action_1_up(Store_bos_last_index,i,diff1);
+
+         Entry_Action_2_up(Store_bos_last_index,i,diff1);
 
          low = iLow(Symbol(),PERIOD_CURRENT,i);
 
@@ -562,7 +692,7 @@ void choch(int i)
 
                   if(TimeToStruct(time_of_candle,edate))
                     {
-                     edate.hour = edate.hour + 2;
+                     edate.hour = edate.hour + 1;
                      edate.min  = 0;
                      edate.sec  = 0;
                     }
@@ -617,7 +747,9 @@ void choch(int i)
          Store_bos_last_index = iBarShift(Symbol(), PERIOD_CURRENT, store_last_bos_index_time, false);
          int diff = Store_bos_last_index - (i);
 
-         Entry_Action_1_down(Store_bos_last_index,i,diff);
+         //Entry_Action_1_down(Store_bos_last_index,i,diff);
+
+         Entry_Action_2_down(Store_bos_last_index,i,diff);
 
          high = iHigh(Symbol(),PERIOD_CURRENT,i);
 
@@ -719,7 +851,7 @@ void choch(int i)
 
                   if(TimeToStruct(time_of_candle,edate))
                     {
-                     edate.hour = edate.hour + 2;
+                     edate.hour = edate.hour + 1;
                      edate.min  = 0;
                      edate.sec  = 0;
                     }
@@ -1414,6 +1546,7 @@ void OnTick()
      {
 
       Entry_strategy(1);
+
       for(int m=0; m < orderNum; m++)
         {
          if(od_1[m].choch_index_date_time != 0)
@@ -1493,6 +1626,85 @@ void OnTick()
            }
         }
 
+      //      for(int m=0; m < orderNum; m++)
+      //        {
+      //         if(od_1[m].choch_index_date_time != 0)
+      //           {
+      //
+      //            //Print("current time is ",TimeCurrent());
+      //            //Print("time is ",od_1[m].Time_of_candle_For_trade);
+      //            //Print("signal is ",od_1[m].Signal);
+      //
+      //
+      //            if(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "buy" && od_1[m].Time_of_candle_For_trade != 0)
+      //              {
+      //               // Print("time is greater and signal is buy ",TimeCurrent());
+      //
+      //               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);
+      //
+      //               //                     Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
+      //               //                     Print("choch_index_date_time ",od_1[m].choch_index_date_time);
+      //               //
+      //               //                     Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
+      //               //                     Print("low of current candle  ",iLow(Symbol(),PERIOD_CURRENT,0));
+      //               //                     Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
+      //               //                     Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
+      //
+      //               if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) > iLow(Symbol(),PERIOD_CURRENT,1)
+      //                  && iClose(Symbol(),PERIOD_CURRENT,close_index) < iClose(Symbol(),PERIOD_CURRENT,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(TimeCurrent() >= od_1[m].Time_of_candle_For_trade && od_1[m].Signal == "sell" && od_1[m].Time_of_candle_For_trade != 0)
+      //              {
+      //
+      //               // Print("time is greater and signal is sell ",TimeCurrent());
+      //
+      //               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);
+      //
+      //               //                     Print("reversal_index_date_time ",od_1[m].reversal_index_date_time);
+      //               //                     Print("choch_index_date_time ",od_1[m].choch_index_date_time);
+      //               //
+      //               //                     Print(" high is ",iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx));
+      //               //                     Print("low of current candle  ",iLow(Symbol(),PERIOD_CURRENT,0));
+      //               //                     Print("close of chock is ",iClose(Symbol(),PERIOD_CURRENT,close_index));
+      //               //                     Print("close of current candle is ",iClose(Symbol(),PERIOD_CURRENT,0));
+      //
+      //               if(iHigh(Symbol(),PERIOD_CURRENT,reversal_indexx) < iLow(Symbol(),PERIOD_CURRENT,1)
+      //                  && iClose(Symbol(),PERIOD_CURRENT,close_index) > iClose(Symbol(),PERIOD_CURRENT,1))
+      //                 {
+      //                  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());
+      //
+      //                 }
+      //
+      //              }
+      //           }
+      //        }
+
 
      }
   }