Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 534
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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.
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:
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:
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 ?
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
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 :)
Nachtrag: während ich tippte, fanden Sie den richtigen Weg :)
Ich habe es in den MT5-Code eingefügt:
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.
...
Sie wird immer noch in der aktuellen Leiste angezeigt, obwohl sie das nicht sollte.
Warum sollte es das nicht?
Ich habe es ausgeschaltet i<rates_total-1
WARUM?!
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.