Sí, pero el código de arriba, en el comentario, hace una cuenta atrás suave cada segundo y la función es brusca. En M1, de 60 barras, 3 o 4 veces no hay alerta.
Sí, pero el código de arriba, en el comentario, hace una cuenta atrás suave cada segundo, mientras que la función es brusca. En M1, de 60 barras 3 o 4 veces no hay alerta.
Esto se debe a que la función utiliza TimeCurrent() - hora de llegada de la última cita. Debe sustituir esta hora por una local TimeLocal() con un desplazamiento calculado (ya se le ha explicado).
Tienes que sustituir esta hora por la local TimeLocal() con un desplazamiento calculado (ya te lo han dicho)
No sé cómo hacerlo bien, así que encontré un código que cuenta el tiempo para cerrar H1 sin ticks y tratando de usarlo, reemplacéTimeCurrent() en su función, pero no quiere mostrarme los segundos para cerrar.
#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);
}
////
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Todavía no he descubierto cómo contar los segundos hasta que la barra se cierra en el período actual. Necesito tu ayuda.
Te he dado la función.
Te he dado la función.
Sí, pero el código de arriba, en el comentario, hace una cuenta atrás suave cada segundo y la función es brusca. En M1, de 60 barras, 3 o 4 veces no hay alerta.
Sí, pero el código de arriba, en el comentario, hace una cuenta atrás suave cada segundo, mientras que la función es brusca. En M1, de 60 barras 3 o 4 veces no hay alerta.
Esto se debe a que la función utiliza TimeCurrent() - hora de llegada de la última cita. Debe sustituir esta hora por una local TimeLocal() con un desplazamiento calculado (ya se le ha explicado).
Tienes que sustituir esta hora por la local TimeLocal() con un desplazamiento calculado (ya te lo han dicho)
No sé cómo hacerlo bien, así que encontré un código que cuenta el tiempo para cerrar H1 sin ticks y tratando de usarlo, reemplacéTimeCurrent() en su función, pero no quiere mostrarme los segundos para cerrar.
Por favor, dime cómo implementar la idea en el código:
If (OrdersTotal ==0) {Alert ;}
¡Chicos!
Hay muchos objetos en el gráfico.
Pero cuando se accede a ella.
Dice que sólo hay tres.
¿Por qué no cuenta flechas?
Por favor, dime cómo implementar la idea en el código:
Hazlo así. El código es casi correcto. Sólo falta una palabra ahí:
¡Chicos!
Hay muchos objetos en el gráfico.
Pero cuando se accede a ella.
Dice que sólo hay tres.
¿Por qué no cuenta flechas?