Если нужно находить свечу точно по времени, то можно сделать так:
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 );
//...продолжаем тело функции
}
Надеюсь помог вам уловить общий ход мыслей)
Спасибо. Понял куда смотреть.
datetime TIME = /*указываете нужное вам время*/;
В каком виде указывать время?
TIME = "04:00"?
Или еще нужна дата текущего дня? Хотя мне лучше только время. Чтобы каждый день брался бар который образовался в 4:00.
https://book.mql4.com/ru/basics/types#14
Вот тут все расписано про типы данных.
А еще есть полный набор функций работы со временем - https://book.mql4.com/ru/functions/datetime, не составит труда написать код, который каждый новый день будет получать данные имеено 4-х часового бара.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Как реализовать возможность:
ТФ Н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