Да, но приведённый выше код, в комментарии, отсчитывает плавно каждую секунду, а функция бывает рывками. На М1, из 60 баров 3 или 4 раза нет алерта.
Потому, что в функции используется TimeCurrent() - время прихода последней котировки. Вам это время нужно заменить на локальное TimeLocal() с рассчитанным смещением (вам уже говорили про это)
Вам это время нужно заменить на локальное TimeLocal() с рассчитанным смещением (вам уже говорили про это)
Как правильно это сделать я не знаю, поэтому нашел код, который без тиков отсчитывает врем до закрытия Н1, и пытаюсь его использовать, заменил TimeCurrent() в вашей функции, но не хочет она мне показывать секунды до закрытия.
#property strict#property indicator_chart_window//--- input parameters#define MILLISEC_TIMER_INTERVAL 500int timeOffset;
datetime ServerLocalOffset;
datetime prevTime,myTime,localtime;
bool newBar = false;
datetime sec;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingEventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL);
datetime srvtime,tmpOffset;
RefreshRates();
srvtime = TimeCurrent();
// Modified
localtime = TimeLocal()+TimeGMTOffset();
if(TimeHour(srvtime)>TimeHour(localtime)){
// Server Time is still ahead of usint newOffset = TimeHour(srvtime)-TimeHour(localtime);
ServerLocalOffset = (newOffset*60*60);
}elseif(TimeHour(srvtime)<TimeHour(localtime)){
// Server Time is Behind usint newOffset = TimeHour(localtime)-TimeHour(srvtime);
ServerLocalOffset = (newOffset*60*60);
}else{
// No modification required
ServerLocalOffset = srvtime;
}
localtime = TimeLocal()-ServerLocalOffset;
tmpOffset = TimeSeconds(srvtime) - TimeSeconds(localtime);
if(tmpOffset < 30 && tmpOffset >= 0){
timeOffset = TimeSeconds(srvtime) - TimeSeconds(localtime);
}
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
EventKillTimer();
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---datetime localtime;
localtime = TimeLocal()+(TimeGMTOffset()+(60*60));
sec=Time[0]+Period()*60-localtime-timeOffset;//if(SecondsToCandleClose(Symbol(),0)<=2){Alert("время откр. бара ",Time[0]);}
Comment(" Time 1: ",TimeToStr(sec,TIME_SECONDS )," Time 2: ",TimeToStr(SecondsToCandleClose(Symbol(),0),TIME_SECONDS ));
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+long SecondsToCandleClose(conststring symbol_name,constENUM_TIMEFRAMES timeframe)
{
datetime array[];
return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-sec : 0);
}
////
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Так и не сообразил, как посчитать секунды до закрытия бара на текущем периоде. Помогите.
Я вам функцию давал.
Я вам функцию давал.
Да, но приведённый выше код, в комментарии, отсчитывает плавно каждую секунду, а функция бывает рывками. На М1, из 60 баров 3 или 4 раза нет алерта.
Да, но приведённый выше код, в комментарии, отсчитывает плавно каждую секунду, а функция бывает рывками. На М1, из 60 баров 3 или 4 раза нет алерта.
Потому, что в функции используется TimeCurrent() - время прихода последней котировки. Вам это время нужно заменить на локальное TimeLocal() с рассчитанным смещением (вам уже говорили про это)
Вам это время нужно заменить на локальное TimeLocal() с рассчитанным смещением (вам уже говорили про это)
Как правильно это сделать я не знаю, поэтому нашел код, который без тиков отсчитывает врем до закрытия Н1, и пытаюсь его использовать, заменил TimeCurrent() в вашей функции, но не хочет она мне показывать секунды до закрытия.
Подскажите пожалуйста как в коде реализовать идею:
If (OrdersTotal ==0) {Алерт ;}
Парни!
На графике куча объектов.
Но при обращении
Он сообщает, что их только три.
Почему он не считает стрелки?
Подскажите пожалуйста как в коде реализовать идею:
Так и сделайте. Код почти правильный. Там только одного слова не хватает:
Парни!
На графике куча объектов.
Но при обращении
Он сообщает, что их только три.
Почему он не считает стрелки?