Поскольку в теме полное молчание, пришлось использовать метод научного тыка.
1-ый результат использования метода научного тыка: срок истечения ордера измеряется в минутах, т.е. минимальный шаг для установки expiration составляет одну минуту. Уже хорошо.
2-ой результат использования метода научного тыка: сама по себе конструкция "request.expiration=TimeTradeServer()+int(PeriodSeconds()/Div);" работает нормально и не противоречит правилам языка MQL5.
3-ий результат использования метода научного тыка: прогон datetimetest.mq5 на дневном таймфрейме и "OHLC на M1" (при прочих одинаковых условиях) не принёс никаких значимых изменений (по-прежнему одинаковые результаты прогонов при различных значениях Div):
На основании изложенного прихожу к выводу, что описанная выше проблема может быть результатом некорректной обработки функцией Ordsend() правильно оформленного запроса на установку отложенного ордера (и, в частности, результатом некорректной обработки параметра request.expiration). Могу ошибаться; но иных объяснений происходящему никто не представил. Что ещё проверять - не знаю. В связи с этим адресую свой вопрос непосредственно разработчикам: Почему результаты оптимизации по переменной Div являются одинаковыми и не зависят от изменения срока истечения ордера?
Спасибо за ответ!
Вполне возможно, что при полноценной проверке результаты не всегда одинаковые.
Передо мной стояла задача быстро и наглядно смоделировать ситуацию, с которой столкнулся. Вроде получилось :) Впервые :) Ну а поскольку тестер в режиме "Все тики" работает медленно, то проверялась лишь малая часть возможностей, которая всё же смогла выдать условия, при которых появляются искомые совпадающие результаты.
Здравствуйте.
1. Нашел ошибку в тестере стратегий.
При установке времени ликвидации отложенного ордера request.expiration, ордер по истечении времени не ликвидируется.
Когда советник работает в реальном времени, то все работает нормально.
и еще
2. При установке ордера программно с параметром expiration, ордер не ставится и дает ошибку 10022 (Неверная дата истечения ордера в запросе)
request.action=TRADE_ACTION_PENDING;
request.symbol=Symbol();
request.volume=Lots;
request.price=NormalizeDouble(Price,Digits);
request.sl=NormalizeDouble(Loss,Digits);
request.tp=NormalizeDouble(Take,Digits);
request.type=ORDER_TYPE_SELL_LIMIT;
request.magic=MagicNumber;
request.type_time=ORDER_TIME_SPECIFIED;
request.expiration=TimeTradeServer()+5*60*kol5ot;
OrderSend(request,result);
Приходится модифицировать установленный без expiration ордер и тогда дата expiration принимается.
OrderSelect(ticket);
request.symbol=Symbol();
request.volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
request.price=OrderGetDouble(ORDER_PRICE_OPEN);
request.sl=OrderGetDouble(ORDER_SL);
request.tp=OrderGetDouble(ORDER_TP);
request.type=ORDER_TYPE_SELL_LIMIT;
request.magic=MagicNumber;
request.order=ticket;
request.action=TRADE_ACTION_MODIFY;
request.type_time=ORDER_TIME_SPECIFIED;
request.expiration=TimeTradeServer()+5*60*kol5ot;
OrderSend(request,result);
Вопрос 2 - снимается. Вроде заработало.
Вопрос по тестеру остается.
В тестере исправили. Ждите следующего билда
Спасибо
Да, заработало. Спасибо!

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
При оформлении запроса на установку отложенного ордера пробую использовать такую конструкцию:
где Div - input-переменная типа float (double). При этом ожидаю, что изменение времени истечения ордера должно влиять на результаты ТС. Цель - найти оптимальное время истечения ордера. Таймфреймы - краткосрочные (внутридневные). Сервер MQ допускает все режимы срока действия (истечения) отложенных ордеров (7).
Но при попытках оптимизации по переменной Div всегда получаю один и тот же результат. Такое впечатление, что время истечения ордера совершенно не меняется. Т.е. не увеличивается и не уменьшается.
Для наглядности набросал простейший советник (см. DateTimeTest.mq5) и прогнал его с настройками и входными данными, изложенными в Expiration.doc. Входные данные указаны достаточно произвольно, с целью побыстрее получить значимые результаты. В этом же doc-файле отражены результаты оптимизации по переменной Div. Билд 316.
Почему результаты оптимизации по переменной Div являются одинаковыми и не зависят от изменения срока истечения ордера? Что я делаю не так?
В Справочнике говорится, что expiration - это "Срок истечения ордера". В каких единицах измеряется этот срок (дни, часы, минуты, секунды)?