Поставьте время >= и организуйте флаг, что цена получена.
да, наверное это лучший способ.
флаг поставить в положение true,
а через некоторое время его опять перевести в положение false
bool flag=false; void OnTimer() { if (flag==false && Hour()==12 && Minute()==0) { Alert(Bid); flag=true; } if (flag==true && Hour()==12 && Minute()==1) flag=false; }
и использовать OnTimer, а то на моем торговом символе мало тиков приходит за минуту, функция OnTick тут будет не оптимальна.
да, неверное это лучший способ.
флаг поставить в положение true,
а через некоторое время его опять перевести в положение false
и использовать OnTimer, а то на моем торговом символе мало тиков приходит за минуту, функция OnTick тут будет не оптимальна.
Вы не определили точно задачу, цена на каком тике нужна, на последнем до 12-00, или на первом после 12-00. ТаймКаррент до миллисекунд время меряет. Ровно в 12 часов цена бывает редко. Поймать последнюю цену до 12 часов в ОнТаймере или на первом тике После 12 часов. Поймать первую цену после 12 можно и без ОнТаймера. Текущее время больше 12 первый тик, и флаг, что первый тик получен.
Зы, а после 13 часов флаг вернуть что не получен)
да, неверное это лучший способ.
флаг поставить в положение true,
а через некоторое время его опять перевести в положение false
и использовать OnTimer, а то на моем торговом символе мало тиков приходит за минуту, функция OnTick тут будет не оптимальна.
Может быть, если за минуту хоть одна котировка есть…
Вот так?
А если не будет в терминале тика в это время, то и цену не покажет.
А если в терминале будет 2 тика за эту секунду, то оно 2 раза цену покажет.
Как лучше организовать?
А если сделать через OnTimer(), то если долго будет выполняться код внутри функции OnTimer, то мы тоже можем на нужную секунду не попасть.
проще взять цену открытия 12-го часового бара дня
datetime tm;
int bs,DAY,H_12;
H_12=(iTime(Symbol(),PERIOD_D1,1)-iTime(Symbol(),PERIOD_D1,2))/2;
tm=iTime(Symbol(),PERIOD_D1,0)+H_12;
if(DAY!=TimeDay(TimeCurrent()))
{
if(tm<=TimeCurrent())
{
bs=iBarShift(Symbol(),PERIOD_H1,tm);
Alert(iOpen(Symbol(),PERIOD_H1,bs));
DAY=TimeDay(TimeCurrent());
}
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
А если не будет в терминале тика в это время, то и цену не покажет.
А если в терминале будет 2 тика за эту секунду, то оно 2 раза цену покажет.
Как лучше организовать?
А если сделать через OnTimer(), то если долго будет выполняться код внутри функции OnTimer, то мы тоже можем на нужную секунду не попасть.