Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 622

 
Wie kann ich die Anzahl der Balken im MT4-Tester erhöhen, bevor ich den Indikator initialisiere? Der Indikator sollte in der Historie berechnet werden - Sie müssen überprüfen, ob er im Tester korrekt ist.
 
Eine weitere Frage: Wie kann ich die Integrität der Historie während der Initialisierung in MT4 überprüfen? Ich vermute, dass im Moment der Initialisierung die Historie vertauscht wird, was die Vorberechnung beeinflusst...
 
-Aleks-:
Eine weitere Frage: Wie kann ich die Integrität der Historie während der Initialisierung in MT4 überprüfen? Ich habe den Verdacht, dass im Moment der Initialisierung die Historie vertauscht wird, was die Vorberechnung beeinflusst...
Überprüfen Sie die Anzahl der Balken rates_total. Wenn rates_total > prev_calculated+1 - dann wurde mehr als 1 Bar ausgetauscht und daher wird die Geschichte ausgetauscht.
 
Alexey Kozitsyn:
Überprüfen Sie die Anzahl der Balken rates_total. Wenn rates_total > prev_calculated+1 - bedeutet dies, dass mehr als 1 Takt getauscht wurde und somit die Historie getauscht wurde.
Und prüfen Sie die Frequenz einmal pro Sekunde und setzen Sie die Initialisierung nach einer langen Pause fort, richtig?
 
-Aleks-:
Und die Häufigkeit der Prüfung erfolgt einmal pro Sekunde, und nach einer langen Pause wird die Initialisierung fortgesetzt, richtig?

Wie mir kürzlich in SD gesagt wurde, ist es im Allgemeinen besser, bei Indikatoren auf eine Zeitschaltuhr zu verzichten.

Es genügt, die Bedingung: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) als Bedingung für den ersten Start und die vollständige Neuberechnung des Indikators hinzuzufügen. Wenn Sie dies in OnCalculate() tun, gibt es keine Probleme.

 
Und von welcher "langen Pause" sprechen Sie?
 
Alexey Kozitsyn:

Wie mir kürzlich in SD gesagt wurde, ist es im Allgemeinen besser, bei Indikatoren auf eine Zeitschaltuhr zu verzichten.

Es genügt, die Bedingung: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) als Bedingung für den ersten Start und die vollständige Neuberechnung des Indikators hinzuzufügen. Wenn Sie dies in OnCalculate() tun, gibt es kein Problem.

Ich möchte eine korrekte Berechnung der Indikatortypklasse in meinem Expert Advisor haben.

Wenn wir 10 000 Balken pro Diagramm zulassen, und wir haben sie, dann wird Bars nicht mehr als 10000 zurückgeben, selbst wenn es einen neuen Balken gibt. Woher weiß ich dann, ob es einen neuen Balken gibt, wenn der Verlauf geladen wird?

 
Und anscheinend sollte die Prüfung nicht bei der Initialisierung durchgeführt werden, da der EA initialisiert wird, wenn das Terminal geladen wird, bevor eine Verbindung zu DC.... hergestellt wird.
 
-Aleks-:

Nun, ich brauche die Indikatortypklasse, um in meinem EA korrekt berechnet zu werden.

Daher bin ich verwirrt, wenn 10000 Balken pro Diagramm erlaubt sind, und sie sind, dann Bars wird nicht mehr als 10000 zurück, auch wenn neue Bars erscheinen. Woher weiß ich dann, ob beim Laden der Historie ein neuer Balken vorhanden ist?

Warum nicht? Ja, das wird sie. Und Bars() und rates_total werden sich erhöhen. Überprüfen Sie die Zahl in OnCalculate().

Die Anzahl der im Terminal eingestellten Balken hat keinen Einfluss auf die Anzahl der Balken im Prüfgerät (etwas weniger als 100000).

 
Alexey Kozitsyn:

Warum nicht? Das wird sie. Sowohl Bars() als auch rates_total werden sich erhöhen. Überprüfen Sie die Zahl in OnCalculate().

Die Anzahl der im Terminal eingestellten Balken hatte keinen Einfluss auf die Anzahl der Balken im Prüfgerät (knapp 100000).

Nein, nein, ich brauche es nicht in den Tester, aber wenn ich das Terminal auf einem realen Diagramm ausführen - dort wird es nur funktionieren, wenn die Geschichte weniger als die maximale Anzahl von Bars hat, oder bin ich falsch?