Здравствуйте,
Как я понял из статьи, функция "setBokerOffset ()" должна работать и в тестере стратегий, но она не работает.
void OnTick() { //--- bool isTimeSet = setBokerOffset(); if(!isTimeSet) { Alert("setBokerOffset failed"); return; } }
array out of range in 'DealingWithTime.mqh' (201,21)
Является ли "Альтернативный вариант использования через входные переменные" единственным способом получить правильное время в тестере стратегий?
Является ли "Альтернативный вариант использования через входные переменные" единственным способом получить правильное время в тестере стратегий?
Я предполагаю, что тестер стратегий не получил котировки, и тогда предыдущая функция CopyTime() не сработала. Проверьте, есть ли запрашиваемые и необходимые данные уже локально доступны.
Хорошо, буду внимательнее следить за CopyTime() и постараюсь решить эту проблему.
И спасибо, очень полезная статья!
Добротная статья. Правда, возникает одна проблема: как определить, что брокер\дилер переходит с зимнего\летнего, не обращаясь в его техподдержку?


- www.mql5.com
- Почему бы не спросить?
- Программа знает, когда в США и ЕС летнее/зимнее время, и использует это для расчета смещения брокера.
1. Потому что поддержка не всегда выдает корректную информацию. Вы сами это указали про дилера Альпари. + это накладно: выяснить у каждого дилера переход. Ведь тогда не получается создать хорошего решения, я не знаю, конечный пользователь у кого обсулживается.
2. Ну, вроде как, да, но вот если дилер не переход с зимнего на летнее и обратно, то получается в расчетах какая-то странная штука.
Я попробовал чутка модифицировать вашу библиотеку, но, видимо, что-то не так пошло. Думал код привести к тому, что советник автоматически определяет время GMT и торгует именно по GMT, а не по серверу брокера. Не уверен, что код оптимальный, но решение, кажется, работает. Правда, у тех дилеров, что время не меняют - там получаются какие-то неверные расчеты.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Работаем со временем (Часть 2): Функции:
Научимся автоматически распознавать смещения времени у брокера и время по Гринвичу. Вместо того, чтобы обращаться к брокеру, который скорее всего даст недостаточно полный ответ (а кто захочет объяснять, куда пропал торговый час?), мы сами посмотрим, по какому времени приходят от них котировки в те недели, когда переводят часы. Но конечно же, это мы будем делать не вручную — пусть за нас работает программа.
В этой статье мы продолжим работать с include-файлом DealingWithTime.mqh, с которым работали в первой части. В этом файле до функций и после макро-подстановок идут необходимые переменные, которые объявлены как глобальные переменные:
Эти переменные DST_USD, DST_EUR, и т.д. будут принимать фактическое значение смещения времени в соответствующих странах и регионах — США, Европа и т.д. Значения переменных будут заполняться функциями. В нормальное зимнее время значения равны нулю: время в этот период не смещается.
Далее у нас идут переменные с датой предстоящего перевода часов. Они указывают, когда нужно будет рассчитывать новые значения переменных, чтобы не проводить ненужные расчеты до этого и не тратить вычислительные ресурсы:
Тут есть небольшое отличие в настройках для России, мы рассмотрим ее чуть позже.
Данная структура и ее глобальная переменная являются сердцем всей программы. :)
Автор: Carl Schreiber