datetime ExtBarTimeOpen;
//+------------------------------------------------------------------+
//| Initialisierungsfunktion eine nutzerdefinierten Indikators |
//+------------------------------------------------------------------+
int OnInit()
{
//--- den Timer auf eine Sekunde einstellen
EventSetTimer(1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Nutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Nutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- Ermittlung der aktuellen Öffnungszeit des Balkens
ExtBarTimeOpen=time[rates_total-1];
//--- Rückgabe des Wertes von prev_calculated für den nächsten Aufruf
return(rates_total);
}
//+------------------------------------------------------------------+
//| Timer Funktion |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- Festlegen der Öffnungszeit des vorherigen Balkens
static datetime bar_open_time=ExtBarTimeOpen;
//--- Zählen der Anzahl der Sekunden, die seit der Öffnung des Balkens vergangen sind
static int seconds=int(TimeCurrent()-ExtBarTimeOpen);
//--- wenn die vorherige Öffnungszeit nicht gleich der aktuellen ist, handelt es sich um einen neuen Balken
//--- den neuen Eröffnungszeitpunkt dem vorherigen zuweisen, und die Sekunden auf Null setzen
if(bar_open_time!=ExtBarTimeOpen)
{
bar_open_time=ExtBarTimeOpen;
seconds=0;
}
//--- Erhöhen und Anpassen der Anzahl der Sekunden, die seit der Eröffnung des Balkens vergangen sind
seconds++;
if(seconds>PeriodSeconds(PERIOD_CURRENT))
seconds=0;
//--- Darstellung der Öffnungszeit des Balkens als yyyy.mm.dd hh:mi
string bar_time_open=TimeToString(ExtBarTimeOpen);
//--- Darstellung der aktuellen Zeit als yyyy.mm.dd hh:mi:ss
string time_current=TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS);
//--- Anzahl der verbleibenden Sekunden, bis ein neuer Balken geöffnet wird
int sec_left=PeriodSeconds(PERIOD_CURRENT)-seconds;
//--- verbleibende Zeit bis zum Schließen des aktuellen Balkens in hh:mi:ss
string time_left=TimeToString(sec_left,TIME_MINUTES|TIME_SECONDS);
//--- Erstellen der auszugebenden Zeichenkette
string txt=StringFormat("Opening time of the current bar: %s\n"+
"Time Current: %s\n"+
"Seconds have passed since the bar opened: %d\n"+
"Approximately seconds left before bar closes: %d\n"+
"Time remaining until bar closes: %s",bar_time_open,time_current,seconds,sec_left,time_left);
//--- Anzeige der Eröffnungszeit des Balkens und der aktuellen Zeit,
//--- die Anzahl der Sekunden, die seit der Eröffnung des aktuellen Balkens vergangen sind und die bis zu dessen Schließung verbleiben, und
//--- die verbleibende Zeit bis zur Schließung des aktuellen Balkens im Kommentar
Comment(txt);
/*
result on M1:
Opening time of the current bar: 2024.02.22 18:06
Time Current: 2024.02.22 18:06:24
Seconds have passed since the bar opened: 25
Approximately seconds left before bar closes: 35
Time remaining until bar closes: 00:00:35
result on M5:
Opening time of the current bar: 2024.02.22 18:05
Time Current: 2024.02.22 18:07:28
Seconds have passed since the bar opened: 149
Approximately seconds left before bar closes: 151
Time remaining until bar closes: 00:02:31
result on H1:
Opening time of the current bar: 2024.02.22 18:00
Time Current: 2024.02.22 18:08:13
Seconds have passed since the bar opened: 494
Approximately seconds left before bar closes: 3106
Time remaining until bar closes: 00:51:46
result on D1:
Opening time of the current bar: 2024.02.22 00:00
Time Current: 2024.02.22 18:11:01
Seconds have passed since the bar opened: 65462
Approximately seconds left before bar closes: 20938
Time remaining until bar closes: 05:48:58
*/
}
|