Fehler, Irrtümer, Fragen - Seite 2020
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Die Funktion OrderCalcMargin berücksichtigt bei der Berechnung der Marge nicht den Eröffnungskurs
Ist dies ein Fehler oder sollte es einer sein?
Natürlich ist sie das. Schreiben Sie auf die SD-Karte.
Diese Zeile funktioniert so, wie sie sollte, aber ich musste sie überprüfen, da ich die Reihenfolge der Ausführung erraten muss. Diskussion zu diesem Punkt hier.
Natürlich ein Fehler. Schreiben Sie auf die SD-Karte.
Diese Zeile funktioniert so, wie sie sollte, aber ich musste das überprüfen, da ich die Reihenfolge der Ausführung erraten muss. Diskussion zu diesem Punkt hier.
Die Reihenfolge der Berechnungsausdrücke in Print() ist von rechts nach links. Irgendwie... Bis jetzt... Ich habe es auch vorher überprüft :)
Es ist schwer, sicher zu sein, wenn es einendirekten Widerspruch in der MQL4/5-Referenz gibt:
MQL5 ReferenzGrundlagen der SpracheFunktionenParameterübergabe
Hinweis
Denken Sie daran, dass die Parameter in umgekehrter Reihenfolge an die Funktion übergeben werden, d. h. der letzte Parameter wird zuerst berechnet und übergeben, dann der vorletzte und so weiter. Der Parameter, der der erste nach der öffnenden Klammer ist, wird berechnet und als letzter an die Funktion übergeben.
MQL5 ReferenzGrundlagen der SpracheOperationen und AusdrückeAndere Operationen
Funktionsaufruf mit Argumenten x1, x2,..., xn
Jedes Argument kann eine Konstante, eine Variable oder ein Ausdruck des entsprechenden Typs sein. Übergebene Argumente werden durch Kommata getrennt und müssen in Klammern eingeschlossen werden, wobei die öffnende Klammer auf den Funktionsnamen folgen muss.
Der Wert des Ausdrucks ist der Wert, der von der Funktion zurückgegeben wird. Wenn der Rückgabetyp einer Funktion ungültig ist, kann der Funktionsaufruf nicht rechts von der Zuweisungsoperation platziert werden. Beachten Sie, dass die Reihenfolge der Ausdrücke x1,..., xn garantiert ist.
Bislang konzentriere ich mich auf die Übergabe von Parametern in umgekehrter Reihenfolge.
In einem benachbarten Threadhttps://www.mql5.com/ru/forum/216697/page3 wurde eine Frage zu OrderCalcMargin aufgeworfen.
Test: Prüfen wir 2 verschiedene Möglichkeiten zur Berechnung der Einlage, indem wir verschiedene Eröffnungspreise einsetzen.
Hier ist das LOG
Die Funktion OrderCalcMargin berücksichtigt bei der Berechnung der Marge nicht den Eröffnungskurs
Dies scheint mit dem Wechselkurs der angegebenen Währung zusammenzuhängen, der für den Zeitpunkt und den Eröffnungskurs neu berechnet werden muss.
Wenn die notierte Währung USD ist (und die Kontowährung ebenfalls USD ist), dann ändert sich die berechnete Marge entsprechend dem Eröffnungskurs.
Protokoll für GBPUSD
Ist es ein Fehler oder sollte es einer sein?
Wahrscheinlich sollte es so sein, denn insbesondere AUDUSD und USDJPY sind an der Berechnung beteiligt, und ihre Kurse sind zum Zeitpunkt der Berechnung konstant.
Nun, dieser Gedanke bringt mich dazu, zu überprüfen... Im MetaQuotes-Demokonto ist in der Marktübersicht GBPUSD vorhanden, aber nicht im Robokonto...
Dies muss der Fall sein, da insbesondere AUDUSD und USDJPY in die Berechnung einbezogen werden und ihre Notierungen zum Zeitpunkt der Berechnung unverändert sind.
Nun, dieser Gedanke bringt mich dazu, zu überprüfen... GBPUSD ist im MetaQuotes-Demo-Konto vorhanden, aber nicht im Robo-Konto...
Ich wollte Ihnen nur sagen, dass es einen Fehler gibt.
Ich habe Ihre Situation bereits mit Margin=0 in der OrderCalcMargin-Berechnung reproduziert.
Ich habe es nur noch nicht veröffentlicht.
Im MetaQuotes-Demokonto ist GBPUSD in Market Watch vorhanden, aber nicht im Robo-Konto...
Höchstwahrscheinlich in Market Watch vorhanden (nicht zu verwechseln mit der allgemeinen Liste der Symbole), aber nicht angezeigt.
Dies muss der Fall sein, da vor allem AUDUSD und USDJPY in die Berechnung einbezogen werden und ihre Kurse zum Zeitpunkt der Berechnung unverändert sind.
Nun, dieser Gedanke bringt mich dazu, zu überprüfen... Im MetaQuotes-Demokonto ist in der Marktübersicht GBPUSD vorhanden, aber nicht im Robokonto...
Hier ist der Test:
1. Kreuze in MarketWatch auswählen, alles mit USD ausblenden
2) Fügen Sie das Symbol DSHBTC hinzu und öffnen Sie dessen Chart.
3. Terminal schließen
4) Öffnen Sie das Terminal
5. Starten wir den Test für DSHBTC
Hier ist das LOG:
Alle Kreuze zeigen Marge=0 und es wurden KEINE GROSSEN KREUZE ausgewählt.
Führen Sie das Skript erneut auf DSHBTC aus
LOG
Es gibt keine Hauptkomponenten, nur USDJPY ist die einzige.
Alle Tests wurden mit MetaQuotes durchgeführt
Höchstwahrscheinlich im Market Watch vorhanden (nicht zu verwechseln mit der allgemeinen Symbolliste), aber nicht angezeigt.
Wir sprechen auf unterschiedliche Art und Weise über dieselbe Sache
Wir sprechen auf unterschiedliche Art und Weise über dieselbe Sache
Ganz genau. Der Market Watch zeigt es nicht an, aber es ist da.
Reparieren Sie es.
Erledigt!
P.S. Ich habe vergessen, die Reserve zu entfernen :)