Советник не торгует. Помогите разобраться!!!

 

Добрый день!

По сколько знаний в MQL5 не достаточно для написания советника с нуля, взял за основу советник MACD Sample из папки Example, поставляемый с терминалом MT5.

По сути поменял только индикаторы и соответственно условия. Советник должен находить уровень по фракталам, рисовать линию по найденному уровню и открывать позицию от этого уровня.

Все необходимы данные вычисляются, но линия не отрисовывается и позиции не открываются. Причем функция отрисовки линии в другом советнике (более простом) работает.

Помогите пожалуйста разобраться в чем ошибка.

Файлы:
LP_.mq5  62 kb
 
mayler:

Добрый день!

По сколько знаний в MQL5 не достаточно для написания советника с нуля, взял за основу советник MACD Sample из папки Example, поставляемый с терминалом MT5.

По сути поменял только индикаторы и соответственно условия. Советник должен находить уровень по фракталам, рисовать линию по найденному уровню и открывать позицию от этого уровня.

Все необходимы данные вычисляются, но линия не отрисовывается и позиции не открываются. Причем функция отрисовки линии в другом советнике (более простом) работает.

Помогите пожалуйста разобраться в чем ошибка.


Посмотрел код, не увидел ни одного тестового принта. Почему вы их не вставили? Во всех местах, где не происходит желаемое, например, не рисуется линия вставьте Print(список всех важных переменных). Скорее всего, ситуация прояснится.
 
Alexey Volchanskiy:

Посмотрел код, не увидел ни одного тестового принта. Почему вы их не вставили? Во всех местах, где не происходит желаемое, например, не рисуется линия вставьте Print(список всех важных переменных). Скорее всего, ситуация прояснится.

Так я ж взял за основу готовый советник, который работал. И линия рисовалась в другом советнике из которого взял эту функцию. А в функции открытии позиций есть принт при невозможности открыть позицию, но он молчит.

 
mayler:

Так я ж взял за основу готовый советник, который работал. И линия рисовалась в другом советнике из которого взял эту функцию. А в функции открытии позиций есть принт при невозможности открыть позицию, но он молчит.

Ну так значит что-то порушили. Вот вам лень принты вставить, а почему думаете, что кому-то интересно в этих багах ковыряться? Вставьте принты, учитесь искать ошибки самостоятельно.
 
Alexey Volchanskiy:
Ну так значит что-то порушили. Вот вам лень принты вставить, а почему думаете, что кому-то интересно в этих багах ковыряться? Вставьте принты, учитесь искать ошибки самостоятельно.


Линию малек поправил, она начала рисоваться, но только по первому значению параметра level, а дальше перерисовывается, но опять с первоначальным значением. Почему-то level (для цены) не обновляется в функции создания линии. Хотя level то обновляется и принты выводят корректные значения. Кстати вставил принт

if(!HLineCreate(0,InpName,0,level,clrRed,InpStyle,InpWidth,InpBack, 
      InpSelection,InpHidden,InpZOrder)) 
      Print("name=",InpName, " Price=",level);

но он ничего не выводит. 

 
Ваш принт сработает только если линия, по каким то причинам, не сможет отрисоваться.
 
Aleksei Radchenko:
Ваш принт сработает только если линия, по каким то причинам, не сможет отрисоваться.
Поставил принт в другое место. Теперь он пишет "true", но опять рисует на одном уровне, хотя level меняется корректно.
 if(Fractal_Up_LP>Fractal_Up_Level && rt[1].close<Up_Body)
         {
         level=Up_Body;
         Print("ShortLevel=",level);
          if(!HLineCreate(0,InpName,0,level,clrBlue,InpStyle,InpWidth,InpBack, 
         InpSelection,InpHidden,InpZOrder)) 
            { 
            return(false); 
            } 
//--- перерисуем график и подождем 1 секунду 
         Print(HLineCreate());
         ChartRedraw(); 
         Sleep(1000);
Причина обращения: