Galim_V: Können Sie mir sagen, wie man die unteren Indikatoren von einem anderen Zeitrahmen als dem, auf dem die Eule schwebt, erhält?
1. Warum haben Sie den Vogel aufgehängt? Ist das nicht bedauerlich?
2. Haben Sie jemals die Hilfe geöffnet? Das Empfangen von Indikatordaten im Expert Advisor von einem beliebigen Zeitrahmen ist überhaupt kein Problem, da die ersten beiden Parameter der Funktionen zum Empfangen von Indikatordaten verwendet werden, um das Symbol und die Periode des Charts anzugeben, von dem Sie Werte empfangen möchten.
Schon bei der Eingabe des Codes im Editor wird die Liste der formalen Variablen der Funktion geöffnet, und ein Tooltip zeigt dort das Symbol und den Zeitrahmen an. Seltsam, dass Sie ihnen keine Beachtung geschenkt haben.
Brauchen Sie Zeit? Sie können die Zeit des letzten Ticks abfragen: TimeCurrent(), oder die letzte lokale Zeit: TimeLocal().
Wenn Sie die Zeit des letzten Ticks am Wochenende erhalten, hilft Ihnen der Timer nicht weiter - die Zeit ist dann der letzte Tick am Freitag oder der letzte Tick des letzten Arbeitstages. Und TimeLocal() liefert Ihnen keine Serverzeit - Sie müssen sie mit einem Offset neu berechnen.
Ich weiß allerdings nicht genau, was Sie am Ende erreichen wollen.
1. Warum haben Sie den Vogel aufgehängt? Ist das nicht bedauerlich?
2. Haben Sie jemals die Hilfe geöffnet? Das Empfangen von Indikatordaten im Expert Advisor von einem beliebigen Zeitrahmen ist überhaupt kein Problem, da die ersten beiden Parameter der Funktionen zum Empfangen von Indikatordaten verwendet werden, um das Symbol und die Periode des Charts anzugeben, von dem Sie Werte empfangen möchten.
Schon bei der Eingabe des Codes im Editor wird die Liste der formalen Variablen der Funktion geöffnet, und ein Tooltip zeigt dort das Symbol und den Zeitrahmen an. Seltsam, dass Sie sie nicht beachtet haben.
2018.07.04 22:17:38.398 2016.11.10 13:00:00 Arap01 EURUSD,H1: Rundung 44.53781512605145 45.0 Dies sind stochastische Daten im "normalen" Modus. d.h.:
Ich brauche also eine Warnung zwei Sekunden bevor der Balken ohne Tick schließt.
Das ist nicht einfach, man muss einen genaueren Timer laufen lassen (mindestens 500 ms) und vorher eine Synchronisation der lokalen Zeit mit der Serverzeit durchführen. Ich habe Ihnen bereits davon erzählt:
Zum Zeitpunkt des Eintreffens des Ticks wird die Differenz TimeCurrent()-TimeLocal() gezählt (dies wird einmalig durchgeführt, um die lokale und die Serverzeit zu synchronisieren) - Dies ist der Offset in Bezug auf den Broker. Wenn sich dieser Offset später ändert, sollte die Zeit neu berechnet werden; - Beim Start des Expert Advisors (oderbeim Erscheinen von TaktD1) berechnen wir alle notwendigen Zeiten erneut, in der lokalen Zeit, unter Berücksichtigung des Offsets; - Warten auf das, was wir im Timer "gezählt" haben, Überprüfung auf Desynchronisation, Verlust der Verbindung mit dem Broker, Übersetzung der lokalen Hände.
Das ist nicht einfach, man muss einen genaueren Timer laufen lassen (mindestens 500ms) und die lokale Zeit mit der Serverzeit vorsynchronisieren. Ich habe Ihnen bereits davon erzählt:
Sie können +/- 1 Sekunde auffangen
Ich danke Ihnen. So stellen Sie die Zeit in Sekunden ein, bevor sich der M5-Balken schließt. Im Moment wird H1 angezeigt.
#property strict#property indicator_chart_window//--- input parameters#define MILLISEC_TIMER_INTERVAL 500int timeOffset;
datetime ServerLocalOffset;
datetime prevTime,myTime,localtime;
bool newBar = false;
//+------------------------------------------------------------------+//| 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 sec;
datetime localtime;
localtime = TimeLocal()+(TimeGMTOffset()+(60*60));
sec=Time[0]-localtime-timeOffset;
if(sec<=2){Alert("время откр. бара ",Time[0]);}
Comment(TimeToStr(sec,TIME_SECONDS ));
}
//+------------------------------------------------------------------+
Ich bin nicht selbst darauf gekommen"Stellen Sie einfach sicher, dass Sie die Daten in OnTimer() aktualisieren, damit Ihr Code funktioniert. "
Wie soll ich das machen?
Haben Sie einen Offline-Zeitplan?
Können Sie mir sagen, wie man die unteren Indikatoren von einem anderen Zeitrahmen als dem, auf dem die Eule schwebt, erhält?
1. Warum haben Sie den Vogel aufgehängt? Ist das nicht bedauerlich?
2. Haben Sie jemals die Hilfe geöffnet? Das Empfangen von Indikatordaten im Expert Advisor von einem beliebigen Zeitrahmen ist überhaupt kein Problem, da die ersten beiden Parameter der Funktionen zum Empfangen von Indikatordaten verwendet werden, um das Symbol und die Periode des Charts anzugeben, von dem Sie Werte empfangen möchten.
Schon bei der Eingabe des Codes im Editor wird die Liste der formalen Variablen der Funktion geöffnet, und ein Tooltip zeigt dort das Symbol und den Zeitrahmen an. Seltsam, dass Sie ihnen keine Beachtung geschenkt haben.
Haben Sie einen Offline-Zeitplan?
Nein.
Nein.
Warum dann die ständige Aktualisierung ohne Not?
Brauchen Sie Zeit? Sie können die Zeit des letzten Ticks abfragen: TimeCurrent(), oder die letzte lokale Zeit: TimeLocal().
Wenn Sie die Zeit des letzten Ticks am Wochenende erhalten, hilft Ihnen der Timer nicht weiter - die Zeit ist dann der letzte Tick am Freitag oder der letzte Tick des letzten Arbeitstages. Und TimeLocal() liefert Ihnen keine Serverzeit - Sie müssen sie mit einem Offset neu berechnen.
Ich weiß allerdings nicht genau, was Sie am Ende erreichen wollen.
1. Warum haben Sie den Vogel aufgehängt? Ist das nicht bedauerlich?
2. Haben Sie jemals die Hilfe geöffnet? Das Empfangen von Indikatordaten im Expert Advisor von einem beliebigen Zeitrahmen ist überhaupt kein Problem, da die ersten beiden Parameter der Funktionen zum Empfangen von Indikatordaten verwendet werden, um das Symbol und die Periode des Charts anzugeben, von dem Sie Werte empfangen möchten.
Schon bei der Eingabe des Codes im Editor wird die Liste der formalen Variablen der Funktion geöffnet, und ein Tooltip zeigt dort das Symbol und den Zeitrahmen an. Seltsam, dass Sie sie nicht beachtet haben.
2018.07.04 22:17:38.398 2016.11.10 13:00:00 Arap01 EURUSD,H1: Rundung 44.53781512605145 45.0 Dies sind stochastische Daten im "normalen" Modus. d.h.:
2=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,2);
Hier frage ich M5 2=iStochastic(NULL,5,K,D,slowing,Average_method,price_field,MODE_MAIN,2);
Ich erhalte 2018.07.04 22:23:05.680 2016.11.10 13:00:00 Arap01 EURUSD,H1: Rundung 0.0 0.0
Ich weiß aber nicht genau, was Sie am Ende haben wollen.
Ich möchte zwei Sekunden, bevor der Balken schließt, alarmiert werden. Ich werde am Wochenende nicht arbeiten.
Ich brauche also eine Warnung zwei Sekunden bevor der Balken ohne Tick schließt.
Das ist nicht einfach, man muss einen genaueren Timer laufen lassen (mindestens 500 ms) und vorher eine Synchronisation der lokalen Zeit mit der Serverzeit durchführen.
Ich habe Ihnen bereits davon erzählt:
Zum Zeitpunkt des Eintreffens des Ticks wird die Differenz TimeCurrent()-TimeLocal()
gezählt (dies wird einmalig durchgeführt, um die lokale und die Serverzeit zu synchronisieren)
- Dies ist der Offset in Bezug auf den Broker. Wenn sich dieser Offset später ändert, sollte die Zeit neu berechnet werden;
- Beim Start des Expert Advisors (oderbeim Erscheinen von TaktD1) berechnen wir alle notwendigen Zeiten erneut, in der lokalen Zeit, unter Berücksichtigung des Offsets;
- Warten auf das, was wir im Timer "gezählt" haben, Überprüfung auf Desynchronisation, Verlust der Verbindung mit dem Broker, Übersetzung der lokalen Hände.
Das ist nicht einfach, man muss einen genaueren Timer laufen lassen (mindestens 500ms) und die lokale Zeit mit der Serverzeit vorsynchronisieren.
Sie können +/- 1 Sekunde auffangenIch habe Ihnen bereits davon erzählt:
Ich danke Ihnen. So stellen Sie die Zeit in Sekunden ein, bevor sich der M5-Balken schließt. Im Moment wird H1 angezeigt.