[SERVICE DESK] Fehler beim Abrufen der Zeit der älteren TF im Timer! - Seite 13

 
Alexey Kozitsyn:

Lesen Sie Punkt 1.

Um die Eröffnungszeit des Balkens zu erhalten, ist der Timer überhaupt nicht hilfreich, und alle anderen Daten, wenn nicht von einem anderen Symbol als dem Diagramm. Wenn er sich nicht auf ein anderes Symbol als das aktuelle Diagramm bezieht, sondern auf eine andere TF des aktuellen Symbols, ist er interessant. Sie wird nicht aktualisiert, bis die neuen Daten eintreffen. Aber Ihre gesamte Arbeit basiert auf dem aktuellen Symbol. Machen Sie sich also nicht die Mühe mit dem Timer. Der Rest als solcher wird mehrfach durchgekaut. Das Thema drehte sich im Kreis.

 
Konstantin Nikitin:

Um die Eröffnungszeit des Balkens zu erhalten, ist der Timer überhaupt nicht hilfreich, und alle anderen Daten, wenn nicht von einem anderen Symbol als dem Diagramm. Wenn er sich nicht auf ein anderes Symbol als das aktuelle Diagramm bezieht, sondern auf einen anderen TF des aktuellen Symbols, ist es interessant, ihn jede Millisekunde zu überprüfen. Sie wird nicht aktualisiert, bis die neuen Daten eintreffen. Aber Ihre gesamte Arbeit basiert auf dem aktuellen Symbol. Machen Sie sich also nicht die Mühe mit dem Timer. Der Rest als solcher wird mehrfach durchgekaut. Das Thema hat sich im Kreis gedreht.

Kumpel, du verstehst offensichtlich nicht, worum es hier geht. Es geht nicht mehr um den Timer, vergessen Sie ihn. Der Timer bezieht sich auf mein eigentliches Problem. Das Problem ist nun der Fehler in den empfangenen Daten. Punkt 1, den ich Ihnen empfohlen habe zu lesen, besagt, dass bei Vorhandensein von IsConnected() der Indikator erst beim zweiten Ereignis OnCalculate() eine Verbindung zum Server herstellt. Ihr vorheriger Rat ist also nutzlos.

 
Alexey Kozitsyn:

Kumpel, du verstehst eindeutig nicht, was hier vor sich geht. Es geht nicht mehr um den Timer, vergessen Sie ihn. Der Timer bezieht sich auf mein eigentliches Problem. Das Problem ist nun der Fehler in den empfangenen Daten. Punkt 1, den ich Ihnen empfohlen habe zu lesen, besagt, dass bei Vorhandensein von IsConnected() der Indikator erst beim zweiten Ereignis OnCalculate() eine Verbindung zum Server herstellt. Ihr vorheriger Rat ist also nutzlos.

Haben Sie es experimentell überprüft? Ich empfehle, das zu überprüfen. Starten Sie also das Terminal mit dem Test neu.

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[]
)
{
   static int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

Und was sehen Sie?

Beim ersten Durchlauf, wenn eine Verbindung zum Server besteht, funktioniert alles.

 
Konstantin Nikitin:

Haben Sie es empirisch getestet? Ich schlage vor, Sie tun es. Starten Sie also das Terminal mit dem Test neu.

Und was sehen Sie?

Beim ersten Durchlauf, wenn eine Verbindung zum Server besteht, funktioniert alles.

Wer, der bei klarem Verstand ist, testet, wenn der Markt nicht funktioniert?

Und ja, ich habe es empirisch getestet, worüber ich auch geschrieben habe.

 
Alexey Kozitsyn:

Wer, der bei klarem Verstand ist, testet, wenn der Markt nicht funktioniert?

Und ja, ich habe es experimentell getestet, worüber ich auch geschrieben habe.

Das hat nichts damit zu tun, ob der Markt funktioniert oder nicht. Der Indikator ist gelaufen und seine Analyse hat begonnen. Das Ergebnis des ersten Durchgangs finden Sie in den Kommentaren. Sie sagten

Alexey Kozitsyn:

Sie sollten es lesen - es geht darum, dass, wenn IsConnected() vorhanden ist, der Indikator erst beim zweiten Ereignis OnCalculate() eine Verbindung mit dem Server herstellt. Ihr vorheriger Rat ist also nutzlos.

 
Konstantin Nikitin:

Was hat das damit zu tun, ob der Markt funktioniert oder nicht? Der Indikator hat begonnen, die Analyse ist im Gange. Das Ergebnis des ersten Durchgangs finden Sie in den Kommentaren. Sie sagten.

Ja, ja. Also gut. Schalten Sie nun das Terminal aus, auf dem der Indikator installiert ist, und starten Sie ihn erneut.

 
Alexey Kozitsyn:

Igitt. Also gut. Schalten Sie nun das Terminal mit dem von Ihnen installierten Indikator aus und starten Sie es erneut.

Diese Tabelle

wurde nur wenige Minuten vor der ersten Veröffentlichung erstellt. Das heißt, heute. Und zwar nachdem das Terminal neu gestartet wurde.
Die Verbindung mit dem Server wird auch am Wochenende hergestellt. Die gleiche Waage zu überprüfen, kann die neuesten Daten zu erhalten, wenn es getrennt wurde, bevor die Sitzung geschlossen wurde.

 
Konstantin Nikitin:

Daher diese Grafik

und es wurde nur wenige Minuten vor der ersten Veröffentlichung gemacht. Das heißt, heute. Und zwar nachdem das Terminal neu gestartet wurde.
Die Verbindung zum Server wird auch am Wochenende hergestellt. Die gleiche Waage zu überprüfen, kann die neuesten Daten zu erhalten, wenn es getrennt wurde, bevor die Sitzung geschlossen wurde.

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Ich erhalte ein Ergebnis:

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
Und Ihr Code zeigt beim Laden keine Kommentare an.
 
Alexey Kozitsyn:

Ich erhalte ein Ergebnis:

Und Ihr Code zeigt beim Laden keine Kommentare an.

Nun, es ist möglich. Mein Server wird am Sonntag manchmal wegen Wartungsarbeiten heruntergefahren, aber nicht für lange. Dies könnte einer der Gründe für die fehlende Verbindung sein.
Dies kann ein weiterer Grund sein, warum das Terminal keine Verbindung zum Server herstellen kann, bevor der Indikator startet.
Mein Terminal stellt sofort eine Verbindung her.

 
Konstantin Nikitin:

Das kann sehr wohl sein. Mein Server wird am Sonntag wegen Wartungsarbeiten heruntergefahren, aber er wird nicht lange ausfallen. Dies könnte einer der Gründe für die fehlende Verbindung sein.
Dies kann ein weiterer Grund dafür sein, dass das Terminal keine Zeit hat, sich vor dem Start des Indikators mit dem Server zu verbinden.
Mein Terminal stellt sofort eine Verbindung her.

Dann machen Sie es sich einfach: Laden Sie meinen Indikator mit Ihren Bearbeitungen jetzt in den Chart. Schalten Sie das Terminal aus. Schalten Sie ihn am Montag wieder ein und sehen Sie sich das Ergebnis an. Eine weitere Diskussion ist sinnlos.