Запрет на открытие позиций

 

Хочу внести в код эксперта запрет на размещение ордера и открытия позиций СРАЗУ после присоединения к графику.

Т.е. смысл в том, чтобы эксперт дождался смены сигнала (если в момент присоединения сигнал на buy, то ждал появления сигнала на sell) и выполнял соответствующие инструкции.

Теперь самое главное ...вопрос как? Прошу помочь более опытных..

 
Sergey:

Хочу внести в код эксперта запрет на размещение ордера и открытия позиций СРАЗУ после присоединения к графику.

Т.е. смысл в том, чтобы эксперт дождался смены сигнала (если в момент присоединения сигнал на buy, то ждал появления сигнала на sell) и выполнял соответствующие инструкции.

Теперь самое главное ...вопрос как? Прошу помочь более опытных..

В OnInit MQL5 советника флаг FirstStart выставляете в "true" - это означает, что сейчас был первый запуск. При появлении сигнала запоминаете тип сигнала.

При последующих сигналах проверяете флаг FirstStart и запомненный тип сигнала: если текущий сигнал отличается от запомненного, то флаг выставляете в "false" и работает по сигналу. 

 
Vladimir Karputov:

В OnInit MQL5 советника флаг FirstStart выставляете в "true" - это означает, что сейчас был первый запуск. При появлении сигнала запоминаете тип сигнала.

При последующих сигналах проверяете флаг FirstStart и запомненный тип сигнала: если текущий сигнал отличается от запомненного, то флаг выставляете в "false" и работает по сигналу. 

А если тип сигнала повторяется, к примеру Signal[1] == 1 (покупка) либо Signal[1] == 2 (продажа) ?

Здесь нужно какое-то свойство или параметр с уникальным номером?

 
Sergey:

А если тип сигнала повторяется, к примеру Signal[1] == 1 (покупка) либо Signal[1] == 2 (продажа) ?

Здесь нужно какое-то свойство или параметр с уникальным номером?

До тех пор пока флаг FirstStart  "true" сигнал может повторяться хоть тыщу раз :). А вот как только сигнал измениться, тогда флаг FirstStart  сбрасываем (переводим в "false") и дальше уже внимание на этот флаг не обращаем внимание. 

 
Vladimir Karputov:

До тех пор пока флаг FirstStart  "true" сигнал может повторяться хоть тыщу раз :). А вот как только сигнал измениться, тогда флаг FirstStart  сбрасываем (переводим в "false") и дальше уже внимание на этот флаг не обращаем внимание. 

Получилось такая запись:

if (Signal[1]==1 && FirstStart) return;               // сигнал первого бала "на покупку" и флаг в позиции true - выходим
        if (Signal[1]!=1)                             // если сигнал не "на продажу"
         {
         FirstStart=false;                            // переводим флаг в позицию false
         }
      
         if (Signal[1]==1 && !FirstStart)             // если сигнал "на покупку" и флаг в позиции false - выполняем остальной код
         {
           //..............
           }

тоже самое в другую сторону.

Причина обращения: