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

 
MikeZv:

Vladimir, danke für die Antwort auf die erste Frage, ich habe diese Funktionen vermisst.

Ich habe ein und denselben Indikator in MT4 und in MT5 eingesetzt (natürlich ist der Code an jede Plattform angepasst).
Bis zur Nulllinie sind ihre Werte gleich, also anscheinend von einem Ende ... :)
Und beim Deaktivieren der Berechnung auf dem aktuellen Balken in MT4 wird nichts unter dem aktuellen Balken gezeichnet, in MT5 - falsche Werte.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fragen von Anfängern

Karputov Vladimir, 2016.03.08 15:13

... Zur Fehlersuche sollten Sie prüfen, welcher Wert im Zeitreihen-Array time[i] enthalten ist, damit Sie verstehen, an welchem Ende Sie die Berechnung der Balken beginnen und wo Sie einen "Null"-Balken haben.


 
MikeZv:
Und wie kann man eine solche Kontrolle durchführen?

Fügen Sie in MetaEditore einen Haltepunkt hinzu und starten Sie das Debugging. Wenn der Haltepunkt gestoppt wird, fügen Sie time[0] zur Beobachtung hinzu:

Fehlersuche

 
Karputov Vladimir:

Fügen Sie in MetaEditore einen Haltepunkt hinzu und starten Sie das Debugging. Wenn der Haltepunkt angehalten wird, fügen Sie time[0] zur Beobachtung hinzu:


Ich habe die Ausgabe bereits in den Code eingefügt

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00:00

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00

Eingefügt in den MT5-CodeArraySetAsSeries(time,true);
Jetzt Ausgabe:

MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 2010.01.04 00:00:00

Und auch Kursarrays ?


 
MikeZv:
Ich habe die Ausgabe bereits in den Code eingefügt

MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00

MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00
Was muss ich jetzt tun?

In beiden Versionen des Indikators fügen SieArraySetAsSeries hinzu - für die Arrays, die Sie für Ihre Berechnungen verwenden: high[], low[] und temporär für das time[]-Array - es wird Ihnen helfen zu verstehen, wo der "Null"-Balken ist. So wird der "Null"-Balken in beiden Versionen auf der gleichen Seite des Diagramms sein (rechts oder links - je nachdem, was Sie in ArraySetAsSeries einstellen), und Sie erhalten den gleichen Berechnungsteil des Indikators.

Hinzugefügt: während ich tippte, haben Sie den richtigen Weg gefummelt :)

 
Karputov Vladimir:


Nachtrag: während ich tippte, fanden Sie den richtigen Weg :)

Ich habe sie gefunden, aber sie wird immer noch nicht richtig angezeigt. :)
Ich habe es in den MT5-Code eingefügt:
   ArraySetAsSeries(ExtCalcVlBuffer,true); 
   ArraySetAsSeries(ExtMovingBuffer,true);
   ArraySetAsSeries(ExtStdDevBuffer,true);
   ArraySetAsSeries(time,true);             
   ArraySetAsSeries(low,true);              
   ArraySetAsSeries(high,true); 

Es kommt heraus:

Esgibt nurExtCalcVlBuffer aus, aber der Durchschnitt und die Abweichung zählen nicht...
Und es wird immer noch auf dem aktuellen Balken ausgegeben, obwohl es nicht sein sollte.

 
MikeZv:
...

Sie wird immer noch in der aktuellen Leiste angezeigt, obwohl sie das nicht sollte.

Warum sollte es das nicht?
 
Karputov Vladimir:
Warum sollte es das nicht?
Ich habe es ausgeschaltet i<rates_total-1
 
MikeZv:
Ich habe es ausgeschaltet i<rates_total-1
WARUM?!
 
Karputov Vladimir:
WARUM?!
Und Sie brauchen nicht mit dem aktuellen Wert zu rechnen, es ist nur eine Verschwendung von CPU-Zeit, und Sie brauchen den Wert einfach nicht.
 
MikeZv:
Sie brauchen den aktuellen Wert nicht zu verwenden, da er den Prozessor nur umsonst belastet und Sie diesen Wert einfach nicht brauchen.

Sie müssen einen solchen Antrag also sofort stellen :) .

Die Situation ist wie folgt: Wenn es einen Balken im Diagramm gibt, entspricht er einer Zelle im Indikatorpuffer. Solange Sie nichts in diese Zelle schreiben, wird in dieser Zelle kein Müll gespeichert.

Grund der Beschwerde: