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
der Code wird eingefügt, die Datei wird nicht angehängt
Es wurden Korrekturen vorgenommen.
Bitte versuchen Sie es erneut.
Er bleibt wegen der Endlosschleife hängen.
Es gibt nur einen Ausweg aus der Schleife - eine Pause. Aber der Bruch, den Sie haben, tritt ein, wenn eine bestimmte Bedingung erfüllt ist. Eine der Komponenten
Sie holen sich den Indikator-Handle jedes Mal innerhalb der Funktion und kopieren ihn, ohne zu prüfen, ob die Daten bereit sind.
Anregung.
1. Bringen Sie die Handle-Variable auf die globale Ebene.
2. Empfangen Sie den Indikator-Handle bei OnInit (Sie ändern die Parabelparameter sowieso nicht).
3. Prüfen Sie vor dem Kopieren von Daten aus dem Indikatorpuffer deren Berechenbarkeit - die Funktion BarsCalculated (Parabolic) wird Ihnen dabei helfen.
4) Organisieren Sie den Ausstieg aus dem Zyklus. Wenn Sie den Punkt 3 nicht ausführen, ist es notwendig, die Funktion BarsCalculated(Parabolic) aufzurufen. 3 nicht erfüllt ist.
2. es ändert sich nicht in das Testbeispiel, in der Tat diese Funktion wird die ganze Zeit mit verschiedenen Parametern verwendet, das ist, warum ich das Handle nicht in OnInit erhalten
3. ich werde es überprüfen, ich verstehe nur nicht wirklich, wofür ich es brauche, die Bedingung ist so, dass es nicht scheitern kann, eine Reihe von parabolischen Punkten ist die nächsten Balken, sie sollten auf jeden Fall hochgeladen werden (und im Allgemeinen verstehe ich, dass die Geschichte an den Tester ein Jahr vor dem angegebenen Startdatum der Prüfung hochgeladen wird). Das funktioniert wirklich gut. Es funktioniert in MQL4 sowohl in real als auch im Tester (obwohl es keine separate Parabelfunktion gibt, aber sie ist eingebaut...).
Es wurden Korrekturen vorgenommen.
Versuchen Sie es noch einmal.
2. es ändert sich nicht in das Testbeispiel, und in der Tat ist diese Funktion die ganze Zeit mit verschiedenen Parametern verwendet, so dass ich das Handle nicht in OnInit erhalten
3. ok, ich werde es überprüfen, ich verstehe nur den Punkt nicht wirklich, die Bedingung ist so, dass es nicht scheitern kann, eine Reihe von parabolischen Punkten sind die nächsten Balken, sie sollten auf jeden Fall hochgeladen werden (und im Allgemeinen verstehe ich, dass die Historie ein Jahr vor dem angegebenen Teststartdatum an den Prüfer hochgeladen wird). Das funktioniert wirklich gut. Sie funktioniert in MQL4 sowohl in der Realität als auch im Testprogramm (allerdings gibt es eine eingebaute Parabelfunktion, keine separate).
3. Es wurde bereits erörtert und in der Referenz(https://www.mql5.com/ru/docs/series/barscalculated) beschrieben, warum dies notwendig ist.
Hinweis
Die Funktion ist nützlich, wenn Sie die Daten eines Indikators direkt nach seiner Erstellung abrufen möchten (um ein Indikator-Handle zu erhalten).
Dies ist Ihr Fall.
Der Indikator wird auf der Grundlage der Balkendaten berechnet. Die Balken sind vorhanden, aber die berechneten Daten können fehlen.
Das bedeutet, dass diese Position das Ergebnis mehrerer Geschäfte mit diesem Instrument ist. Als Ergebnis sehen Sie den gewichteten Durchschnittspreis der Position.
3. Warum dies notwendig ist, wurde bereits mehrfach diskutiert und ist in der Hilfe beschrieben(https://www.mql5.com/ru/docs/series/barscalculated).
Dies ist Ihr Fall.
Der Indikator wird auf Basis von Balkendaten berechnet. Die Balken sind vorhanden, aber die berechneten Daten sind es möglicherweise nicht.
Ja, ich habe es mit BarsCalculated, vielen Dank.
Aber trotzdem ist es logisch falsch, dass es im Testgerät funktioniert und nicht funktioniert. Sie müssen alle Prüfungen bereits in den Tester eingebaut haben, und wenn die Anfrage zu einigen Daten geht und sie nicht da sind, dann erscheint der Fehler. Aber der Tester hat Balken, aber aus irgendeinem Grund kann er keine Daten berechnen und bleibt still...
Ich dachte,der gewichtete Durchschnittspreis sei nur ein technischer Indikator... Ich erhalte nicht immer 0, wenn ich den Strategietester laufen lasse... Manchmal können ein paar Cents auftreten.
Gewichteter Durchschnitt nach Volumen. Zum Beispiel gab es drei Abschlüsse für EURUSD:
Infolgedessen haben wir eine Position auf EURUSD mit einem Volumen von 0,6 Lots, aber zu welchem Preis?
Gewichteter Durchschnitt nach Volumen. Zum Beispiel gab es drei Abschlüsse für EURUSD:
Am Ende haben wir eine EURUSD-Position von 0,6 Lots, aber zu welchem Preis?
Wäre es nicht einfacher, den Preis auf die Genauigkeit der Währung auf Server-Ebene aufzurunden? Schließlich würde jeder EA unter der Anpassung der Genauigkeit und des Preises pro Punkt leiden müssen...
Warum sollte der Expert Advisor leiden? Dieser gewichtete Durchschnittspreis wird für die Berechnung der Schließung von Positionen benötigt. Sie ist für den Expert Advisor nicht von Nutzen. Er muss die Position zu einem normalen Preis mit der für dieses Symbol erforderlichen Anzahl von Zeichen schließen.
In einigen Fällen ist ein normalisierter Preiswert erforderlich, unabhängig davon, wie der Preis erhalten wird.
Es ist einfacher, eine serverseitige Normalisierung vorzunehmen, solange der Server den Eröffnungskurs ohnehin neu berechnet (zumindest meiner Meinung nach).
Übrigens, da wir über den gewichteten Durchschnittspreis und die Netting-Plattform sprechen.
Soweit ich weiß, gibt es zwei Modelle für das Trimmen (teilweise Schließen) einer Verlustposition, die zuvor geschlossen wurde:
1. Nicht den Verlust aus dem Teilschlusskurs ausgleichen, sondern einfach den Eröffnungskurs neu berechnen (wenn ich mich nicht irre, ist es das, was FC tut);
2. den Eröffnungskurs unverändert lassen und den Verlust fixieren.
Das Gleiche gilt für die Umkehrung von Verlustpositionen
Ich möchte die Meinung der Entwickler darüber, welche Methode wird schließlich in MT5 standardisiert werden, wenn möglich, warum...