PolarSeaman: Je n'ai toujours pas trouvé comment compter les secondes jusqu'à la fermeture de la barre sur la période en cours. J'ai besoin de votre aide.
Oui, mais le code ci-dessus, dans le commentaire, effectue un décompte régulier toutes les secondes, alors que la fonction est saccadée. Sur M1, sur 60 mesures, 3 ou 4 fois il n'y a pas d'alerte.
Oui, mais le code ci-dessus, dans le commentaire, effectue un décompte régulier toutes les secondes, alors que la fonction est saccadée. Sur M1, sur 60 mesures, 3 ou 4 fois il n'y a pas d'alerte.
C'est parce que la fonction utilise TimeCurrent() - l'heure d'arrivée de la dernière citation. Vous devez remplacer cette heure par une TimeLocal() locale avec un décalage calculé (on vous l'a déjà dit).
Vous devez remplacer cette heure par l'heure locale TimeLocal() avec un décalage calculé (on vous l'a déjà dit).
Je ne sais pas comment le faire correctement, alors j'ai trouvé un code qui compte le temps jusqu'à la fermeture du H1 sans ticks, et j'essaie de l'utiliser, j'ai remplacéTimeCurrent() dans votre fonction, mais il ne veut pas me montrer les secondes avant la fermeture.
#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);
}
////
Alors le signal est cyclique. Et même si aucune commande n'a été ouverte. L'idée est que 1) les ordres sont ouverts 2) maintenant il n'y a pas d'ordres 3)1 Alerte
Je n'ai toujours pas trouvé comment compter les secondes jusqu'à la fermeture de la barre sur la période en cours. J'ai besoin de votre aide.
Je vous ai donné la fonction.
Je vous ai donné la fonction.
Oui, mais le code ci-dessus, dans le commentaire, effectue un décompte régulier toutes les secondes, alors que la fonction est saccadée. Sur M1, sur 60 mesures, 3 ou 4 fois il n'y a pas d'alerte.
Oui, mais le code ci-dessus, dans le commentaire, effectue un décompte régulier toutes les secondes, alors que la fonction est saccadée. Sur M1, sur 60 mesures, 3 ou 4 fois il n'y a pas d'alerte.
C'est parce que la fonction utilise TimeCurrent() - l'heure d'arrivée de la dernière citation. Vous devez remplacer cette heure par une TimeLocal() locale avec un décalage calculé (on vous l'a déjà dit).
Vous devez remplacer cette heure par l'heure locale TimeLocal() avec un décalage calculé (on vous l'a déjà dit).
Je ne sais pas comment le faire correctement, alors j'ai trouvé un code qui compte le temps jusqu'à la fermeture du H1 sans ticks, et j'essaie de l'utiliser, j'ai remplacéTimeCurrent() dans votre fonction, mais il ne veut pas me montrer les secondes avant la fermeture.
S'il vous plaît dites-moi comment mettre en œuvre l'idée dans le code :
If (OrdersTotal ==0) {Alert ;}
Les gars !
Il y a beaucoup d'objets sur le graphique.
Mais quand vous y accédez.
Ça dit qu'il n'y en a que trois.
Pourquoi ne compte-t-il pas les flèches ?
S'il vous plaît dites-moi comment mettre en œuvre l'idée dans le code :
Faites comme ça. Le code est presque correct. Il ne manque qu'un mot ici :
Les gars !
Il y a beaucoup d'objets sur le graphique.
Mais quand vous y accédez.
Ça dit qu'il n'y en a que trois.
Pourquoi ne compte-t-il pas les flèches ?