К сожалению в MQL4 нет пока отслеживания события типа OnOrderClose, поэтому приходится как-то решать это вручную.
Сейчас робот на каждом тике просматривает историю ордеров и проверяет последний закрытый этого символа и с соответствующим комментарием.
скорость тестирования с таким алгоритмом резко падает. Ищу вариант более быстрый,
можно запоминать через глобальные переменные, но это чревато потерей инфы при внеурочном отключении терминала.
Наверняка уже кто-то умнее меня сталкивался с этой проблемой, поделитесь, пожалуйста )
int total; void OnTick() { if(total!=OrdersTotal()) { OnTrade(); total=OrdersTotal(); } void OnTrade() { }
Спасибо )
на счету параленъльно работает несколько роботов и они могут тоже делать ордера и менять OrdersTotal()
и переменная total будет обнуляться при перезагрузке терминала, тогда не избежать потерь, можно конечно сделать через файл, но на каждом тике обращаться к файлу тоже не прибавит скорости.
Спасибо )
на счету параленъльно работает несколько роботов и они могут тоже делать ордера и менять OrdersTotal()
и переменная total будет обнуляться при перезагрузке терминала, тогда не избежать потерь, можно конечно сделать через файл, но на каждом тике обращаться к файлу тоже не прибавит скорости.
При первом запуске терминала считываете информацию, и заносите её в переменную и с ней работаете. Как только изменилось состояние счёта Открытие/Закрытие, у вас единоразово снова пробежит цикл, и обновит информацию в переменной.
Таким образом ничего не будет работать на каждом тике
При первом запуске терминала считываете информацию, и заносите её в переменную и с ней работаете. Как только изменилось состояние счёта Открытие/Закрытие, у вас единоразово снова пробежит цикл, и обновит информацию в переменной.
Таким образом ничего не будет работать на каждом тике
спасибо еще раз
побежал прикручивать )
напишу если что
спасибо еще раз
побежал прикручивать )
напишу если что
Ещё вариант которым пользуюсь сам.
При открытии ордера его тикет заносится в массив. В зависимости от алгоритма, на каждом тике или на каждом баре в цикле по элементам массива проверяется OrderCloseTime(); каждого ордера, если > 0 значит ордер закрыт. Соответственно выполняются определённые действия и перезаполняется массив.
Ещё вариант которым пользуюсь сам.
При открытии ордера его тикет заносится в массив. В зависимости от алгоритма, на каждом тике или на каждом баре в цикле по элементам массива проверяется OrderCloseTime(); каждого ордера, если > 0 значит ордер закрыт. Соответственно выполняются определённые действия и перезаполняется массив.
Ну и зачем так писать. Обратитесь во фриланс, вам напишут нормальные проверки за недорого.
Прежде чем отвечать, тем более такое, не мешало-бы хорошо подумать...
Я просто хорошо прочитал сообщение, и думать не пришлось. Это-же круто, на каждом тике проверять массивы. Пойду и себе так сделаю...
А ты считаешь что массив из 3-8 элементов проверить дольше и сложней чем историю ордеров??? Обрати внимание, не массивЫ, а всего один массив.
Ответ-то был на вопрос
К сожалению в MQL4 нет пока отслеживания события типа OnOrderClose, поэтому приходится как-то решать это вручную.
Сейчас робот на каждом тике просматривает историю ордеров и проверяет последний закрытый этого символа и с соответствующим комментарием.
скорость тестирования с таким алгоритмом резко падает. Ищу вариант более быстрый,
можно запоминать через глобальные переменные, но это чревато потерей инфы при внеурочном отключении терминала.
Наверняка уже кто-то умнее меня сталкивался с этой проблемой, поделитесь, пожалуйста )
А ты считаешь что массив из 3-8 элементов проверить дольше и сложней чем историю ордеров??? Обрати внимание, не массивЫ, а всего один массив.
Ответ-то был на вопрос

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
К сожалению в MQL4 нет пока отслеживания события типа OnOrderClose, поэтому приходится как-то решать это вручную.
Сейчас робот на каждом тике просматривает историю ордеров и проверяет последний закрытый этого символа и с соответствующим комментарием.
скорость тестирования с таким алгоритмом резко падает. Ищу вариант более быстрый,
можно запоминать через глобальные переменные, но это чревато потерей инфы при внеурочном отключении терминала.
Наверняка уже кто-то умнее меня сталкивался с этой проблемой, поделитесь, пожалуйста )