Подскажите в чем ошибка!?

 
Написал советника,по условию стратегии должен выставлять один в час относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально , а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)
 
smith:
Написал советника,по условию стратегии должен выставлять один в час относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально , а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)
Вам в другой форум нужно тогда https://www.mql4.com/ru/ здесь обсуждаются вопросы связанные с терминалом МТ5
MQL4: механические торговые системы, тестирование стратегий и пользовательские индикаторы на MetaTrader
  • www.mql4.com
MQL4: механические торговые системы, тестирование стратегий и пользовательские индикаторы на MetaTrader
 
smith:
Написал советника,по условию стратегии должен выставлять один в час относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально , а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)

Если вам нужен только один ордер после выполнения вашего условия, проверяйте их количество.

Самый простой вариант - переменная, хранящая факт того, что ордер открыт. Недостаток - при перезагрузке терминала, значение переменной потеряется.

Второй, более надежный вариант - функция OrdersTotal(), возвращает количество открытых ордеров (в том числе отложники). Но этот вариант не подойдет если на счете есть ордера открытые другими советниками.

Самый надежный вариант - обходить в цикле все открытые ордера, выбирая и считая только те которые нужны, с определенным меджиком, определенного типа, по определенному времени открытия и тд.

 
Vigor:

Если вам нужен только один ордер после выполнения вашего условия, проверяйте их количество.

Самый простой вариант - переменная хранящая факт того что ордер открыт. Недостаток - при перезагрузке терминала, значение переменной потеряется.

Закидывать факт установки ордера в глобальную переменную терминала с именем включающем магик, номер счёта, символ графика и его период
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5