Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Выцарапываем профит до последнего пипса"
fxsaber, 2019.09.13 12:05
Длительность одиночного прогона в Тестере.
Хедж.
Неттинг
Неттинг в два раза быстрее. Потому что логика проще.
С Virtual ситуация обратная. Хедж быстрее Неттинга на треть. Связано с более строгими проверками исполнения ордеров, чем в MT5-Тестере.
Не знаю, баг или фича. Но на всякий случай отмечу, что не всегда заполняются поля GetLastError() и MT4ORDERS::LastTradeResult.retcode при отсылке ордера через OrderSend. Например, если цена не выровнена на минимальное изменение цены, OrderSend корректно вернёт false. Но причину легко узнать не удастся, GetLastError() и MT4ORDERS::LastTradeResult будут заполнены старыми значениями, где были результаты исполнения прошлой операции.
Наверное, перепутали ветку.
Я прошёлся по инклудам. Они лежали в папке Virtual. Но возможно принадлежат другому проекту. Или корень причины в другом проекте. Продублируйте тогда в нужной ветке пожалуйста.
В Virtual этого инклуда нет. Перенесите сюда.
Конкретно эти проверки на цену я видел в файлах Order.mqh и Orders.mqh. А они лежат в папке Virtual.
Какие проверки?
Похоже, я всё же туда запостил изначально, куда надо. Если BestInterval выключен, запрос уходит в MT4Orders и там отрабатывает нормально. По крайней мере возвращается какой-то код ошибки, похожий на правду.
А вот если BestInterval включен, то запрос уходит в Orders.mqh и затем в Orders.mqh. Там уже происходит this.Check(inPrice, inSL, inTP, Tick), где уже происходит NormalizeDouble на цену. В результате чего она может из-за округления стать больше исходной, что не пройдёт проверку Price <= Tick.ask и вернёт false, не заполнив поля ошибок.
Похоже, я всё же туда запостил изначально, куда надо. Если BestInterval выключен, запрос уходит в MT4Orders и там отрабатывает нормально. По крайней мере возвращается какой-то код ошибки, похожий на правду.
А вот если BestInterval включен, то запрос уходит в Orders.mqh и затем в Orders.mqh. Там уже происходит this.Check(inPrice, inSL, inTP, Tick), где уже происходит NormalizeDouble на цену. В результате чего она может из-за округления стать больше исходной, что не пройдёт проверку Price <= Tick.ask и вернёт false, не заполнив поля ошибок.
Если Вы про active-режим, то, наверное, стоит внимательно прочесть описание+ветку.