Вопрос по Objectget и Objectgetvaluebyshift - страница 3

 
Rajakumar1:

Большое спасибо за помощь. Подскажите, где искать в первую очередь? Мета-редактор показывает только предупреждения. Ошибок нет.


Ну, а если индикатор работает / рисует линии тренда, как вы ожидаете, сосредоточьтесь на советнике.

Если утверждения печати не отображаются, значит, объекты не существуют. Добавляете ли вы индикатор на график одновременно с запуском советника?

Если вы не видите линий на графике, советник не будет работать.

 
honest_knave:


Ну, а если индикатор работает / рисует линии тренда, как вы ожидаете, сосредоточьтесь на советнике.

Если утверждения печати не отображаются, значит, объекты не существуют. Добавляете ли вы индикатор на график одновременно с запуском советника?

Если вы не видите линий на графике, советник не будет работать.

Спасибо. Индикатор работает нормально. Мне интересно, почему объекты не видны советнику. В списке объектов графика все линии тренда видны.
 
Rajakumar1:
Спасибо. Индикатор работает нормально. Меня интересует, почему объекты не видны советнику. В списке объектов графика все линии тренда видны.


Попробуйте заменить все это:

   int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
   {
   name = ObjectName(j);
   Print(j, "Object - ", name);
   
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
      {
       price1 = ObjectGetValueByShift(name, 0);
       Print("price1:  ", price1);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
      {
       price2 = ObjectGetValueByShift(name, 0);
       Print("price2:  ", price2);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline3-m30")
      {
       price3 = ObjectGetValueByShift(name, 0);
       Print("price3:  ", price3);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline4-m30")
      {
       price4 = ObjectGetValueByShift(name, 0);
       Print("price4:  ", price4);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline5-m30")
      {
       price5 = ObjectGetValueByShift(name, 0);
       Print("price5:  ", price5);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline6-m30")
      {
      price6 = ObjectGetValueByShift(name, 0);
      Print("price6:  ", price6);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline7-m30")
      {
       price7 = ObjectGetValueByShift(name, 0);
       Print("price7:  ", price7);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline8-m30")
      {
       price8 = ObjectGetValueByShift(name, 0);
       Print("price8:  ", price8);
      }
     }

С этим:

   string name = "Trendline1-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price1 = ObjectGetValueByShift(name, 0);

   name = "Trendline2-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price2 = ObjectGetValueByShift(name, 0);

   name = "Trendline3-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price3 = ObjectGetValueByShift(name, 0);

   name = "Trendline4-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price4 = ObjectGetValueByShift(name, 0);
   
   name = "Trendline5-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price5 = ObjectGetValueByShift(name, 0);
   
   name = "Trendline6-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price6 = ObjectGetValueByShift(name, 0);   

   name = "Trendline7-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price7 = ObjectGetValueByShift(name, 0);
   
   name = "Trendline8-m30";
   if(ObjectFind(0,name)<0) Print("Error: cannot find ", name);
   else price8 = ObjectGetValueByShift(name, 0);
 
honest_knave:


Попробуйте заменить все это:

С этим:

Спасибо. Функция печати не печатает цену. В списке объектов графика показаны все линии тренда и они также находятся на графике. Я добавил "Print("price1: ", price1);" после первой линии тренда.
 
Rajakumar1:
Спасибо. Функция печати не печатает цену. В списке объектов графика показаны все линии тренда, и они также находятся на графике. Я добавил "Print("price1: ", price1);" после первой линии тренда.


Да, код, который я предоставил, печатает только если есть проблема.

Видите ли вы какие-либо сообщения в журнале экспертов?

Например, "Error: cannot find Trendline1-m30"?

 
Rajakumar1:
Спасибо. Функция печати не печатает цену. В списке объектов графика показаны все линии тренда и они также находятся на графике. Я добавил "Print("price1: ", price1);" после первой трендовой линии.

Большое спасибо. Теперь все работает. Проблема в отключенной автоторговле.

 
Rajakumar1:

Большое спасибо. Теперь все работает. Проблема заключается в отключении автоторговли.


 
honest_knave:


Да, код, который я предоставил, печатает только в том случае, если есть проблема.

Видите ли вы какие-либо сообщения в журнале экспертов?

Например, "Error: cannot find Trendline1-m30"?

Большое спасибо. Теперь все работает. Проблема заключается в отключенной автоматической торговле.
 
Rajakumar1: Теперь все работает. Проблема в отключении автоторговли.
  1. Проблема, о которой вы спрашиваете, не имеет отношения к отключенной автоторговле.
  2. Проверьте ваши коды возврата (OrderSend) и выясните причину.Что такое значения возврата функций? Как их использовать? -MQL4 форум и Распространенные ошибки в MQL4 программах и как их избежать - MQL4 Статьи
 
Здравствуйте ребята, хочу вызвать индикатор по double iCustom(Symbol(), 0, jebatfx-breakout-trendline, Price_close, 0, 1);

Чтобы получить линию верхнего тренда и линию нижнего тренда на моей ea.

Когда цена пробивает их, она совершает сделку.

Я когда-либо получал свою ea, но я не могу получить максимум и минимум.


Как вы думаете, могу ли я использовать ObjectGetValueByShift() для его определения? Спасибо.
Причина обращения: