Просмотр исходного кода

Ticket # 1483

Add trends line on latest high and low and updates accordingly as new high and low found
AhtashamShahzad3 2 лет назад
Родитель
Сommit
daa54997db
2 измененных файлов с 101 добавлено и 12 удалено
  1. BIN
      BOS_CHOCH.ex5
  2. 101 12
      BOS_CHOCH.mq5

+ 101 - 12
BOS_CHOCH.mq5

@@ -34,6 +34,9 @@ int Store_bos_last_index = 0;
 
 
 bool choch = false;
 bool choch = false;
 int index = 0;
 int index = 0;
+
+int arrow_code_high = 108;
+int arrow_code_low  = 108;
 //+------------------------------------------------------------------+
 //+------------------------------------------------------------------+
 //| Expert initialization function                                   |
 //| Expert initialization function                                   |
 //+------------------------------------------------------------------+
 //+------------------------------------------------------------------+
@@ -44,6 +47,7 @@ void Bos(int i)
      {
      {
 
 
 
 
+
       high = iHigh(Symbol(),PERIOD_CURRENT,high_index);
       high = iHigh(Symbol(),PERIOD_CURRENT,high_index);
 
 
       high1 = iHigh(Symbol(),PERIOD_CURRENT,i);
       high1 = iHigh(Symbol(),PERIOD_CURRENT,i);
@@ -51,8 +55,19 @@ void Bos(int i)
 
 
       if(high1 > high)
       if(high1 > high)
         {
         {
+
+         if(object_find("high") > 0)
+           {
+            ObjectDelete(0,"high");
+
+           }
+
          high = high1;
          high = high1;
 
 
+         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);
+
          ObjectCreate(0,"line1"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),high);
          ObjectCreate(0,"line1"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),high);
          ObjectSetString(0,"line1"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"bos");
          ObjectSetString(0,"line1"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"bos");
 
 
@@ -92,12 +107,19 @@ void Bos(int i)
 
 
                  }
                  }
               }
               }
+            if(object_find("low") > 0)
+              {
+               ObjectDelete(0,"low");
+
+              }
+            ObjectCreate(0,"low",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,index_of_low),low,iTime(Symbol(),PERIOD_CURRENT,0),low);
+            ObjectSetInteger(0,"low",OBJPROP_RAY_RIGHT,true);
+
+            ObjectSetInteger(0,"low",OBJPROP_COLOR,clrRed);
             bearish_found = false;
             bearish_found = false;
 
 
            }
            }
 
 
-         Print(" high price is ", high);
-         Print("low price is ", low);
 
 
 
 
          high_index = i;
          high_index = i;
@@ -116,16 +138,29 @@ void Bos(int i)
 
 
       low1 = iLow(Symbol(),PERIOD_CURRENT,i);
       low1 = iLow(Symbol(),PERIOD_CURRENT,i);
 
 
-
       if(low1 < low)
       if(low1 < low)
         {
         {
-         Store_bos_last_index = i;
 
 
+         if(object_find("low") > 0)
+           {
+            ObjectDelete(0,"low");
 
 
+           }
          low = low1;
          low = low1;
+         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);
+
 
 
          ObjectCreate(0,"line2"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),low);
          ObjectCreate(0,"line2"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),low);
          ObjectSetString(0,"line2"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"bos");
          ObjectSetString(0,"line2"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"bos");
+
+         Store_bos_last_index = i;
+
+
+
+
          int count = (low_index-1) - i;
          int count = (low_index-1) - i;
 
 
 
 
@@ -160,11 +195,18 @@ void Bos(int i)
 
 
                  }
                  }
               }
               }
+            if(object_find("high") > 0)
+              {
+               ObjectDelete(0,"high");
+
+              }
+            ObjectCreate(0,"high",OBJ_TREND,0,iTime(Symbol(),PERIOD_CURRENT,index_of_high),high,iTime(Symbol(),PERIOD_CURRENT,0),high);
+            ObjectSetInteger(0,"high",OBJPROP_RAY_RIGHT,true);
+            ObjectSetInteger(0,"high",OBJPROP_COLOR,clrBlue);
             bullish_found = false;
             bullish_found = false;
 
 
            }
            }
-         Print("low price is ", low);
-         Print(" high price is ", high);
+
 
 
 
 
 
 
@@ -198,7 +240,7 @@ void Entry_Action_1_up(int Store_bos_last_index, int i)
 
 
    if(bearish_found == true)
    if(bearish_found == true)
      {
      {
-      Print("index xi is ", ind);
+
       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,"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));
       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));
 
 
@@ -224,7 +266,7 @@ 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)
 void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
   {
   {
-  diff++;
+   diff++;
 
 
    for(int j=Store_bos_last_index+1; j < iBars(Symbol(),PERIOD_CURRENT); j++)
    for(int j=Store_bos_last_index+1; j < iBars(Symbol(),PERIOD_CURRENT); j++)
      {
      {
@@ -237,10 +279,10 @@ void Entry_Action_1_down(int Store_bos_last_index, int i,int diff)
         }
         }
 
 
      }
      }
-   Print(diff);
+// Print(diff);
    if(bullish_found == true)
    if(bullish_found == true)
      {
      {
-      Print("index xi is ", ind);
+
       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,"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));
       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));
 
 
@@ -284,6 +326,18 @@ void choch(int i)
          Entry_Action_1_up(Store_bos_last_index,i);
          Entry_Action_1_up(Store_bos_last_index,i);
 
 
          low = iLow(Symbol(),PERIOD_CURRENT,i);
          low = iLow(Symbol(),PERIOD_CURRENT,i);
+         low_index = i;
+
+         if(object_find("low") > 0)
+           {
+            ObjectDelete(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);
+
+
          Print("low update due to choch : ", low);
          Print("low update due to choch : ", low);
          trend = "downtrend";
          trend = "downtrend";
          Print("choch at uptrend index --- ", iTime(Symbol(),PERIOD_CURRENT,i));
          Print("choch at uptrend index --- ", iTime(Symbol(),PERIOD_CURRENT,i));
@@ -319,6 +373,16 @@ void choch(int i)
 
 
 
 
          high = iHigh(Symbol(),PERIOD_CURRENT,i);
          high = iHigh(Symbol(),PERIOD_CURRENT,i);
+         high_index = i;
+
+         if(object_find("high") > 0)
+           {
+            ObjectDelete(0,"high");
+
+           }
+         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";
          trend = "uptrend";
 
 
          Print("high is update due to choch : ", high);
          Print("high is update due to choch : ", high);
@@ -346,7 +410,20 @@ void third_Condition(int i)
          ObjectCreate(0,"line5"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,i));
          ObjectCreate(0,"line5"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),iLow(Symbol(),PERIOD_CURRENT,i));
          ObjectSetString(0,"line5"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"3_C");
          ObjectSetString(0,"line5"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"3_C");
          low = low2;
          low = low2;
-         Print("low update due to third condition",low);
+         //low_index = i;
+         if(object_find("low") > 0)
+           {
+            Print("object deleted ");
+            ObjectDelete(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);
+
+         Print("low update due to third condition",low," time of the candle is ",iTime(Symbol(),PERIOD_CURRENT,i));
         }
         }
      }
      }
 
 
@@ -358,7 +435,17 @@ void third_Condition(int i)
         {
         {
          ObjectCreate(0,"line6"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,i));
          ObjectCreate(0,"line6"+iTime(Symbol(),PERIOD_CURRENT,i),OBJ_TEXT,0,iTime(Symbol(),PERIOD_CURRENT,i),iHigh(Symbol(),PERIOD_CURRENT,i));
          ObjectSetString(0,"line6"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"3_C");
          ObjectSetString(0,"line6"+iTime(Symbol(),PERIOD_CURRENT,i), OBJPROP_TEXT,"3_C");
+
          high = high2;
          high = high2;
+         //high_index = i;
+         if(object_find("high") > 0)
+           {
+            ObjectDelete(0,"high");
+
+           }
+         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);
          Print("high update due to third condition",high);
          Print("high update due to third condition",high);
         }
         }
      }
      }
@@ -376,12 +463,14 @@ void foo(int value)
       //Print("hi");
       //Print("hi");
       //if(l < 2)
       //if(l < 2)
         {
         {
-
          Bos(i);
          Bos(i);
          choch(i);
          choch(i);
+
          third_Condition(i);
          third_Condition(i);
 
 
 
 
+
+
          l++;
          l++;
 
 
         }
         }