소스 검색

ticket # 1483

AhtashamShahzad3 2 년 전
부모
커밋
d102f9cd4b
2개의 변경된 파일150개의 추가작업 그리고 40개의 파일을 삭제
  1. BIN
      BOS_CHOCH.ex5
  2. 150 40
      BOS_CHOCH.mq5

BIN
BOS_CHOCH.ex5


+ 150 - 40
BOS_CHOCH.mq5

@@ -13,6 +13,7 @@ input string object_name = "line";
 
 int ind = 0;
 string trend;
+
 bool bearish_found = false;
 bool bullish_found = false;
 
@@ -27,6 +28,7 @@ int index_of_high = 0;
 
 int high_index=0;
 int low_index =0;
+
 double high,low,low1,high1,low2,high2;
 
 int Store_bos_last_index = 0;
@@ -34,9 +36,6 @@ int Store_bos_last_index = 0;
 
 bool choch = false;
 int index = 0;
-
-int arrow_code_high = 108;
-int arrow_code_low  = 108;
 //+------------------------------------------------------------------+
 //| Expert initialization function                                   |
 //+------------------------------------------------------------------+
@@ -222,20 +221,102 @@ void Bos(int i)
   }
 
 
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
-void Entry_Action_1_up(int Store_bos_last_index, int i)
+void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
   {
+
+// i is the index of the choch
+
+
    for(int j=Store_bos_last_index+1; j < iBars(Symbol(),PERIOD_CURRENT); j++)
      {
+      diff++;
+      if(checkCandle(j) == "Bullish")
+        {
+
+         //Print("bullish found at index ",j);
+
+         ind = j;     // reversal candle index
+         bullish_found = true;
+
+         break;
+        }
+
+     }
+
+   Print("condition satisfied :  ",check_values_less_than_choch_high(diff,i));
+
+   Print("choch candle  open is ",iOpen(Symbol(),PERIOD_CURRENT,i));
+   Print("reversal candle  open is ",iOpen(Symbol(),PERIOD_CURRENT,ind));
+
+   if(check_values_less_than_choch_high(diff,i) == true)
+     {
+      if(iOpen(Symbol(),PERIOD_CURRENT,ind) > iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) < iClose(Symbol(),PERIOD_CURRENT,i))
+        {
+         Print("Place buy order -----------------------------------------------------------------------: ");
+        }
+
+
+     }
+
+//Print(diff);
+   if(bullish_found == true)
+     {
+
+      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;
+
+
+
+      bullish_found = false;
+
+     }
+  }
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+void Entry_Action_1_up(int Store_bos_last_index, int i,int diff)
+  {
+   for(int j=Store_bos_last_index+1; j < iBars(Symbol(),PERIOD_CURRENT); j++)
+     {
+      diff++;
       if(checkCandle(j) == "Bearish")
         {
-         ind = j;
+         ind = j;    // reversal candle index
          bearish_found = true;
          break;
         }
 
+     }
+   Print("diff is ", diff);
+
+   Print("condition satisfied :  ",check_values_less_than_choch_low(diff,i));
+
+   Print("choch candle  open is ",iOpen(Symbol(),PERIOD_CURRENT,i));
+   Print("reversal candle  open is ",iOpen(Symbol(),PERIOD_CURRENT,ind));
+
+   if(check_values_less_than_choch_low(diff,i) == true)
+     {
+      if(iOpen(Symbol(),PERIOD_CURRENT,ind) < iOpen(Symbol(),PERIOD_CURRENT,i) && iClose(Symbol(),PERIOD_CURRENT,ind) > iClose(Symbol(),PERIOD_CURRENT,i))
+        {
+         Print("Place sell order -----------------------------------------------------------------------: ");
+        }
+
+
      }
 
    if(bearish_found == true)
@@ -264,45 +345,59 @@ void Entry_Action_1_up(int Store_bos_last_index, int i)
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
-void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
+bool check_values_less_than_choch_high(int diff,int i)             // downtrend
   {
-   diff++;
-
-   for(int j=Store_bos_last_index+1; j < iBars(Symbol(),PERIOD_CURRENT); j++)
+   bool found = false;
+   int value = (diff + i) - 1;
+   for(int k=value; k>i; k--)
      {
-      if(checkCandle(j) == "Bullish")
+
+      //Print("high values ",iHigh(Symbol(),PERIOD_CURRENT,k));
+      //Print("close values ",iClose(Symbol(),PERIOD_CURRENT,i));
+
+      if(iHigh(Symbol(),PERIOD_CURRENT,k) > iClose(Symbol(),PERIOD_CURRENT,i))
         {
-         ind = j;
-         bullish_found = true;
-         diff++;
-         break;
+         found = true;
         }
-
      }
-// Print(diff);
-   if(bullish_found == true)
+   if(found == true)
      {
+      return false;
 
-      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);
+   return true;
 
-      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);
+  }
 
 
+//+------------------------------------------------------------------+
+//|                                                                  |
+//+------------------------------------------------------------------+
+bool check_values_less_than_choch_low(int diff,int i)             // uptrend
+  {
+   bool found = false;
+   int value = (diff + i) - 1;      // from which it start to check value is less in index
+   Print("value to be start is ",value);
+   for(int k=value; k>i; k--)
+     {
 
+      if(iLow(Symbol(),PERIOD_CURRENT,k) < iClose(Symbol(),PERIOD_CURRENT,i))
+        {
+         found = true;
+        }
+     }
+   if(found == true)
+     {
+      return false;
 
+     }
 
-      bullish_found = false;
+   return true;
 
-     }
   }
+
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -323,7 +418,10 @@ void choch(int i)
 
          Print("last bos index is ",Store_bos_last_index);
 
-         Entry_Action_1_up(Store_bos_last_index,i);
+         int diff1 = Store_bos_last_index - (i);
+         Print("diff between bos and last choch is ",diff1);
+
+         Entry_Action_1_up(Store_bos_last_index,i,diff1);
 
          low = iLow(Symbol(),PERIOD_CURRENT,i);
          low_index = i;
@@ -337,6 +435,7 @@ void choch(int i)
 
          ObjectSetInteger(0,"low",OBJPROP_COLOR,clrRed);
 
+         // Entry_Action_1_up(Store_bos_last_index,i);
 
          Print("low update due to choch : ", low);
          trend = "downtrend";
@@ -362,16 +461,10 @@ void choch(int i)
          ObjectCreate(0,"line7"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_ARROW_UP,0,iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,i)-100*Point());
          ObjectSetInteger(0,"line7"+iTime(Symbol(),PERIOD_CURRENT,i),OBJPROP_COLOR,clrGreen);
 
-
-         Print("last bos index is ",Store_bos_last_index);
-         int diff = Store_bos_last_index - i;
-         Print(diff);
+         int diff = Store_bos_last_index - (i);
 
          Entry_Action_1_down(Store_bos_last_index,i,diff);
 
-
-
-
          high = iHigh(Symbol(),PERIOD_CURRENT,i);
          high_index = i;
 
@@ -383,6 +476,7 @@ void choch(int i)
          ObjectCreate(0,"high",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,i),high,iTime(Symbol(),PERIOD_CURRENT,0),high);
          ObjectSetInteger(0,"high",OBJPROP_RAY_RIGHT,true);
          ObjectSetInteger(0,"high",OBJPROP_COLOR,clrBlue);
+
          trend = "uptrend";
 
          Print("high is update due to choch : ", high);
@@ -418,7 +512,7 @@ void third_Condition(int i)
 
            }
 
-        ObjectCreate(0,"low",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,i),low,iTime(Symbol(),PERIOD_CURRENT,0),low);
+         ObjectCreate(0,"low",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,i),low,iTime(Symbol(),PERIOD_CURRENT,0),low);
          ObjectSetInteger(0,"low",OBJPROP_RAY_RIGHT,true);
 
          ObjectSetInteger(0,"low",OBJPROP_COLOR,clrRed);
@@ -451,6 +545,9 @@ void third_Condition(int i)
      }
 
   }
+
+
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -463,14 +560,12 @@ void foo(int value)
       //Print("hi");
       //if(l < 2)
         {
+
          Bos(i);
          choch(i);
-
          third_Condition(i);
 
 
-
-
          l++;
 
         }
@@ -481,6 +576,8 @@ void foo(int value)
      }
 
   }
+
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -520,6 +617,10 @@ int OnInit()
 
    return(INIT_SUCCEEDED);
   }
+
+
+
+
 //+------------------------------------------------------------------+
 //| Expert deinitialization function                                 |
 //+------------------------------------------------------------------+
@@ -528,6 +629,9 @@ void OnDeinit(const int reason)
 //---
 
   }
+
+
+
 //+------------------------------------------------------------------+
 //| Expert tick function                                             |
 //+------------------------------------------------------------------+
@@ -555,6 +659,10 @@ bool NewBar()
      }
   }
 
+
+
+
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+
@@ -567,6 +675,8 @@ bool object_find(string obj)    // to find object placed by user in the chart
    return false;
 
   }
+
+
 //+------------------------------------------------------------------+
 //|                                                                  |
 //+------------------------------------------------------------------+