Скачать MetaTrader 5

Почему не работает двойное преобразование iTime в iBarShift и обратно в iTime

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Александр Пивушков
69

Я ищу позицию бара на пяти минутке преобразуя его из позиции на 30-ти минутке. Преобразование на основе времени 30 минутного бара. Время полученного бара должно примерно совпадать с временем исходного, а оно сильно отличается.

код:

 TimeMainBarForAccount30 = iTime("EURUSD",PERIOD_M30,PositionMainBarForAccount30); // время учитываемого бара на 30
 PositionMainBarForAccount05=iBarShift("EURUSD",PERIOD_M5,TimeMainBarForAccount30); // позиция учитываемого бара на 5-ти минутке
 TimeMainBarForAccount05 = iTime("EURUSD",PERIOD_M30,PositionMainBarForAccount05); // время учитываемого бара на 5

результат

TimeMainBarForAccount30=2016.07.07 04:30:00
TimeMainBarForAccount05=2016.07.06 23:30:00

терминал переустановил. Тестировал разные временнЫе интервалы

Alexander Bereznyak
23259
Alexander Bereznyak  
сделайте принт позиций
Александр Пивушков
69
Александр Пивушков  
Alexander Bereznyak:
сделайте принт позиций
не понял что это и как?
Alexander Bereznyak
23259
Alexander Bereznyak  
сделайте принт PositionMainBarForAccount30 и PositionMainBarForAccount05
Vitalii Ananev
9473
Vitalii Ananev  

Если iBarShift не находит нужный бар то по умолчанию он возвращает ближайший.  Кроме того вы берете время не 5-ти минутного бара, а 30-ти минутного

TimeMainBarForAccount05 =  iTime("EURUSD",PERIOD_M30,PositionMainBarForAccount05).

Alexey Viktorov
12548
Alexey Viktorov  
Александр Пивушков:

Я ищу позицию бара на пяти минутке преобразуя его из позиции на 30-ти минутке. Преобразование на основе времени 30 минутного бара. Время полученного бара должно примерно совпадать с временем исходного, а оно сильно отличается.

код:

TimeMainBarForAccount30 = iTime("EURUSD",PERIOD_M30,PositionMainBarForAccount30); // время учитываемого бара на 30
 PositionMainBarForAccount05=iBarShift("EURUSD",PERIOD_M5,TimeMainBarForAccount30); // позиция учитываемого бара на 5-ти минутке
 TimeMainBarForAccount05 = iTime("EURUSD",PERIOD_M30,PositionMainBarForAccount05); // время учитываемого бара на 5

результат

терминал переустановил. Тестировал разные временнЫе интервалы

1. Откуда в первую строку кода берётся PositionMineBarForAccount30 при первом проходе?

2. Выделенное несоответствие в коде так задумано?

Александр Пивушков
69
Александр Пивушков  
Alexey Viktorov:

1. Откуда в первую строку кода берётся PositionMineBarForAccount30 при первом проходе?

2. Выделенное несоответствие в коде так задумано?

1. PositionMineBarForAccount30 это константа

2. Выделенное это абсолютно не так задумано! :)

Всем кто увидел огромное спасибо, протестировал - все отлично! :)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий