Хай и лоу временной свечи

 

Здравствуйте.

Как реализовать возможность:

ТФ Н1 к примеру.

Свеча 4:00.

Наступила свеча 5:00, код должен выдать хай и лоу свечи 4:00...

Не знаю как обращаться к временным свечам,т.е. свече которая была например в 1:00.

Чтобы дальше работать с полученными хай и лоу временной свечи.


Попробовал так:

if (Hour()==oHour && Minute()==oMinute)
{
int pricehight,pricelow;
pricehight = High[1];
pricelow = Low[1];
Print(pricehight);

}

Но с каждой новой свечей хай и лоу берутся предыдущей свечи..а не свечи которая была в oHour:oMinitue

 
Смотрите функцию iBarShift()
 

Если нужно находить свечу точно по времени, то можно сделать так:


datetime TIME = /*указываете нужное вам время*/;

int bar = iBarShift( Symbol(), PERIOD_H1, TIME );

if ( iTime( Symbol(), PERIOD_H1, bar ) > TIME ) { bar ++; }

//теперь в переменной бар у нас значение индекса свечи времени ТАЙМ

//далее получить клоуз и опен не проблема...

double close = iClose(..., bar);

double open = iOpen(..., bar);


Ну а вообще, если нужно делать что-то раз в период, то:

//на глобальном уровне в программе создаем переменную

datetime currT = 0;

//далее в функции, которая должна срабатывать только при появлении новой свечи прописываем

void MyFunc()

{

if ( iTime( Symbol(), Period(), 0 ) <= currT ) { return; }

currT = iTime( Symbol(), Period(), 0 );

//...продолжаем тело функции

}


Надеюсь помог вам уловить общий ход мыслей)

 
Переменные цен обязательно должны быть double, а не int! Они ведь, как правило, далеко не целые значения принимают.
 

Спасибо. Понял куда смотреть.

 

datetime TIME = /*указываете нужное вам время*/;

В каком виде указывать время?

TIME = "04:00"?

Или еще нужна дата текущего дня? Хотя мне лучше только время. Чтобы каждый день брался бар который образовался в 4:00.

 

https://book.mql4.com/ru/basics/types#14

Вот тут все расписано про типы данных.

А еще есть полный набор функций работы со временем - https://book.mql4.com/ru/functions/datetime, не составит труда написать код, который каждый новый день будет получать данные имеено 4-х часового бара.

 

hasayama:

Спасибо!

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