Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появилась обработка событий?
sergejasv
17
sergejasv 2015.10.07 22:38 

Доброго всем времени суток!

Советник работает через ночь и в начале нового дня нужно получить iOpen этого дня, но пока не перезапустишь робот или терминал, получается цена открытия прошлого дня.

Можно ли решить эту проблему и как?

Mihail Marchukajtes
3432
Mihail Marchukajtes 2015.10.08 13:01  
iOpen(NULL,PERIOD_D,0);
Alexey Viktorov
6681
Alexey Viktorov 2015.10.08 13:24  
sergejasv:
так и есть (DayOpenPrice=iOpen(NULL,PERIOD_D1,0);), но приходит цена открытия дня, когда был запущен советник, а не нового дня...
Видимо в ините это написано, потому и не обновляет.
Mihail Marchukajtes
3432
Mihail Marchukajtes 2015.10.08 13:31  
Если указать параметр 0, те будет цена открытия текущего дня.....
Aleksey
248
Aleksey 2015.10.08 15:11  
Думаю что с такой проблемой просто никто ранее не сталкивался потому и молчат, попробуйте перед получем данных вызывать функцию

bool  RefreshRates();

Victor Nikolaev
Модератор
14482
Victor Nikolaev 2015.10.08 15:15  
PozitiF:
Думаю что с такой проблемой просто никто ранее не сталкивался потому и молчат, попробуйте перед получем данных вызывать функцию

bool  RefreshRates();

Надо код смотреть. Или советник зацикленный или/и обращение цене открытия дня происходит в функции init().
Aleksey
248
Aleksey 2015.10.08 15:49  
sergejasv:
не то и не другое. Refresh тоже пробовал. попробуйте сами сегодня до полуночи запустить робот с iOpen и в 00:01 посмотрите
Чисто как предположение, возможно вы время открытия по своему времени смотрите и не учитываете что закрытие дня происходит например по времени GMT,  новый бар появляется дневной при этом ?
Mihail Marchukajtes
3432
Mihail Marchukajtes 2015.10.08 16:04  
Ну да, нужно код смотреть. Потому как с параметром 0 должен выводить опен текущего дня...
sergejasv
17
sergejasv 2015.10.08 16:06  
nikelodeon:
Ну да, нужно код смотреть. Потому как с параметром 0 должен выводить опен текущего дня...


extern double  DayOpenPrice=0;

if (DayOpenPrice==0)    
         DayOpenPrice=iOpen(NULL,PERIOD_D1,0);

Print(DayOpenPrice);

Aleksey
248
Aleksey 2015.10.08 16:21  

Ну так после первого получения цены открытия у вас значение уже не равно 0 потому условие и не выполняется при появлении нового бара.

попробуйте так.

extern double  DayOpenPrice=0;

if (DayOpenPrice!=iOpen(NULL, PERIOD_D1, 0))    
         DayOpenPrice=iOpen(NULL,PERIOD_D1,0);

Print(DayOpenPrice);


Victor Nikolaev
Модератор
14482
Victor Nikolaev 2015.10.08 16:28  
sergejasv:
написано в тике

Без кода к экстрасенсам. Или Вам нравятся гадания.

Все в чем-то первые, особенно когда в своем коде допустили ошибку. 

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