Как получить котировки на указанное время? - страница 2

 
sarged:
Спасибо! Теперь я думаю я понял.


вот как посетят Клуб Телепатов https://www.mql5.com/ru/forum/133408 - сразу всё понимают.
 
abolk:

вот как посетят Клуб Телепатов https://www.mql5.com/ru/forum/133408 - сразу всё понимают.
+100500
 

Салют. 

Ребята только начал писать на mql, вродебы все довольно просто, но застрял на одном моменте и никак не могу добиться нужного результата.

Золото.

Торги у брокера закрывается в 23,45, открывается в 01,05

Мне необходимо получить цену открытия торгов, а точнее цену именно на 01,05. 

Я сейчас использую 

iOpen(Symbol(),PERIOD_D1,0);

Но это скорее показывает цену закрытия вчерашнего дня, чем открытие нового, на 01:05 в большинстве случаев цена другая, особенно если день открывается ГЭПом.

Как мне получить цену четко на время 01:05

Получается что-то вроде такого, поправьте пожалуйста если не так.

      datetime  some_time = D'2015.02.17 01:05';
      int       shift=iBarShift(Symbol(), PERIOD_M5, some_time);
      double    myPrice = iOpen(Symbol(), PERIOD_M5, shift );

Но теперь возник вопрос как вместо   2015.02.17 - вставить текущий день. Не пойму никак конструкцию datetime, т.к. в документации ни одного примера с переменной.

  

 

Кажется вкурил

      datetime  some_time = StrToTime( TimeToStr( TimeCurrent(), TIME_DATE)+" 01:05");      
      int       shift=iBarShift(Symbol(), PERIOD_M5, some_time);
      double    myPrice = iOpen(Symbol(), PERIOD_M5, shift );


Поправьте пожалуйста если можно сделать както проще.

 
R.Sergey:

Кажется вкурил


Поправьте пожалуйста если можно сделать както проще.

А вы думаете что цена открытия пятиминутного бара будет отличаться от цены открытия дневного бара или минутного??? Именно для описанного вами случая.
 
Alexey Viktorov:
А вы думаете что цена открытия пятиминутного бара будет отличаться от цены открытия дневного бара или минутного??? Именно для описанного вами случая.

Ну по логике вещей Вы правы, она не должна отличаться, НО от минутного может и не будет, а от дневного почемуто отличается 100%. Как я уже написал цена открытия дневного бара равна скорее закрытию прошлого дня чем открытию нового. Это не я так думаю - это такой результат получается на практике. 

А вот по той схеме что я написал цена определяется как раз так как нужно. Почему так я тоже не могу понять, но работает и ладно. 

 
Ну вообще может быть это только в тестере так. Т.к. тестер я так понимаю не понимает во сколько открывается рынок у конкретного брокера. Или может у брокера он открывается раньше но котировки начнинают поставляться позже вот и получается что открытие дня не правильно считает.. ну или первый тик идет по цене закрытия дня .... черт поймешь что там так, как всегда дурят нашего брата.
 

Все равно фигня какая-то.

Первые 2 дня нормально работает, потом shift = 0 и все. (((

 
R.Sergey:

Все равно фигня какая-то.

Первые 2 дня нормально работает, потом shift = 0 и все. (((

Потому, что когда наступает сегодняшний день, но время пока ещё не 1:05, то iBarShift скорее всего вернёт ошибку. Видимо надо поставить условие, если текущее время >= some_time получить номер бара.

 

Да я поставил изначально еще, 0 выдавало до наступления 01,05, но пару дней все ок, а потом iBarShift  всегда оттдает ноль и все. 

Не стал разбираться вернул опять как было iOpen(Symbol(),PERIOD_D1,0);  ((( но вопрос всеже остался открытым. Как мне правильно получить Price на 01:05 каждого дня.

Причина обращения: