Sì, ma il codice sopra, nel commento, fa un conto alla rovescia regolare ogni secondo, mentre la funzione è a scatti. Su M1, su 60 barre, 3 o 4 volte non c'è nessun allarme.
Sì, ma il codice di cui sopra, nel commento, fa un conto alla rovescia regolare ogni secondo, mentre la funzione è a scatti. Su M1, su 60 barre 3 o 4 volte non c'è nessun allarme.
Questo perché la funzione usa TimeCurrent() - tempo di arrivo dell'ultima citazione. Dovete sostituire questo tempo con un TimeLocal() locale con un offset calcolato (vi è già stato detto).
Dovete sostituire questo tempo con TimeLocal() locale con l'offset calcolato (ve l'hanno già detto)
Non so come farlo bene, così ho trovato un codice che conta alla rovescia il tempo per chiudere H1 senza tick, e cercando di usarlo, ho sostituitoTimeCurrent() nella tua funzione, ma non vuole mostrarmi i secondi alla chiusura.
#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);
}
////
Non ho ancora capito come contare i secondi fino alla chiusura della barra sul periodo corrente. Ho bisogno del vostro aiuto.
Vi ho dato la funzione.
Vi ho dato la funzione.
Sì, ma il codice sopra, nel commento, fa un conto alla rovescia regolare ogni secondo, mentre la funzione è a scatti. Su M1, su 60 barre, 3 o 4 volte non c'è nessun allarme.
Sì, ma il codice di cui sopra, nel commento, fa un conto alla rovescia regolare ogni secondo, mentre la funzione è a scatti. Su M1, su 60 barre 3 o 4 volte non c'è nessun allarme.
Questo perché la funzione usa TimeCurrent() - tempo di arrivo dell'ultima citazione. Dovete sostituire questo tempo con un TimeLocal() locale con un offset calcolato (vi è già stato detto).
Dovete sostituire questo tempo con TimeLocal() locale con l'offset calcolato (ve l'hanno già detto)
Non so come farlo bene, così ho trovato un codice che conta alla rovescia il tempo per chiudere H1 senza tick, e cercando di usarlo, ho sostituitoTimeCurrent() nella tua funzione, ma non vuole mostrarmi i secondi alla chiusura.
Per favore, ditemi come implementare l'idea nel codice:
If (OrdersTotal ==0) {Alert ;}
Ragazzi!
Ci sono molti oggetti sul grafico.
Ma quando vi si accede.
Dice che ce ne sono solo tre.
Perché non conta le frecce?
Per favore, ditemi come implementare l'idea nel codice:
Fate così. Il codice è quasi corretto. Manca solo una parola:
Ragazzi!
Ci sono molti oggetti sul grafico.
Ma quando vi si accede.
Dice che ce ne sono solo tre.
Perché non conta le frecce?