Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 16

 

GUT.

Das Wichtigste, was ich jetzt für mich selbst klären muss, ist wahrscheinlich die Frage, ob ich mit meiner Annahme richtig liege, dass zur Berechnung der Marge für einen bestimmten Handel ein fester Wert der Basiswährung gegenüber derEinzahlungswährung zum Zeitpunkt der Eröffnung des Handels verwendet werden sollte. Ist dies richtig? Und die Marge für diesen Handel bleibt konstant, bis der Auftrag geschlossen wird? Ist dies richtig?

 
Babu Bonappan:

.....

Das Wichtigste, was ich zu klären habe, ist wahrscheinlich die Frage, ob ich mit meiner Annahme richtig liege, dass ein fester Wert der Basiswährung gegenüber der Einzahlungswährung, der zum Zeitpunkt der Eröffnung des Geschäfts ermittelt wird, zur Berechnung der Marge für ein bestimmtes Geschäft herangezogen werden sollte oder nicht. Ist dies richtig? Und die Marge für diesen Handel bleibt konstant, bis der Auftrag abgeschlossen ist? Ist dies richtig?

Ja, Sie haben Recht.

Daher ist der Preis für die Berechnung der Marge zum Zeitpunkt der Auftragseröffnung wichtig

 
Renat, vielen Dank für deine Hilfe!
 
Babu Bonappan:
Renat, vielen Dank für deine Hilfe!
Bitte sehr
 
Renat Akhtyamov:

Die Frage bezieht sich auf den Code, also kann man es nicht ohne den Code machen.

Fragen Sie nach Modifikatoren oder nach der Auftragsabwicklung?

Ich weiß nicht, was Sie brauchen. Aber der Fehler im Code ist 100%.

Sie wissen nichts, aber Sie ziehen selbstbewusst Ihre Schlüsse.

Ich frage nach OrderSelect

 
Babu Bonappan:

Bitte beraten Sie, wie man MQL4 verwenden, um einen Margin-Wert für jede offene Position im Terminal zu erhalten?

Ich habe es immer so gemacht:

margin = MarketInfo(Symbol(),MODE_LOTSIZE) * OrderOpenPrice() / AccountLeverage() * OrderLots();

Beim Handel mit EUR/USD hat diese Konstruktion gut funktioniert, und ich war mir sicher, dass ihre Logik korrekt war.

Aber jetzt möchte ich das gleiche Ergebnis für EUR/JPY (oder EUR/CHF) erhalten. Offensichtlich muss ich anstelle vonOrderOpenPrice() den Wert eines Standard-Lots mit dem Kurs der Basiswährung zur Einzahlungswährung multiplizieren (in meinem Fall mit EUR/USD). Aber wie hoch ist dieser Satz? Der Wechselkurs, der zum Zeitpunkt der Positionseröffnung galt, oder der, den wir jetzt haben (zu dem Zeitpunkt, zu dem wir den Einzahlungsbetrag für diese Position wissen wollen)?

OrderOpenPrice - ist der Eröffnungskurs der ausgewählten Order - es macht keinen Unterschied, welche Währung angezeigt wird. Wir sollten wahrscheinlich Point and Digits überprüfen. Oder Sie sollten die Rundung überprüfen. Irgendwo gibt es eine Rundung.

NormalizeDouble auf 5 Dezimalstellen, und wir brauchen 3 Dezimalstellen für JPY. Und die Bindung selbst sollte für alle Währungen auf die gleiche Weise funktionieren.

 
Babu Bonappan:
Was wäre, wenn bei der Auftragseröffnung der EUR/USD-Wechselkurs in das Kommentarfeld geschrieben und dann von dort ausgelesen würde?
Es ist einfacher, "USDJPY" anstelle von OrderSymbol() zu schreiben.
 
A1exPit:
Es ist einfacher, "USDJPY" anstelle von OrderSymbol() zu schreiben.

Warum USD/JPY? Schließlich handeln wir mit EUR/JPY, also ist 1 Lot 100000 EUR, während die Einzahlungswährung USD ist. Meiner Meinung nach brauchen wir in diesem Fall den EUR/USD-Wechselkurs zum Zeitpunkt der Eröffnung eines Geschäfts.

Wenn Sie außerdem ein Zwangssymbol im Code festlegen, ist der Code nicht für den Handel mit einem anderen Währungspaar geeignet, z. B. NZD/CAD. Aber ich würde gerne eine universelle Variante bekommen. Bislang fällt mir nur eine Möglichkeit ein, den zum Zeitpunkt der Auftragseröffnung berechneten Einzahlungsbetrag für jeden Auftrag zu speichern. Vielleicht könnten wir zu diesem Zweck ein Array erstellen, in dem der Bestellschein und die zugehörige Kaution gespeichert werden. Aber vielleicht gibt es eine trivialere Lösung.

 
A1exPit:

OrderOpenPrice - Eröffnungspreis der ausgewählten Order - es ist egal, welche Währung verwendet wird, es wird der Preis angegeben. Höchstwahrscheinlich sollten Punkt und Ziffern überprüft werden. Oder Sie sollten die Rundung überprüfen. Wir sollten die Rundung überprüfen.

NormalizeDouble hat 5 Dezimalstellen, während JPY 3 Dezimalstellen benötigt. Und das Bindemittel selbst soll für alle Währungen gleich funktionieren.

Und warum lügen Sie bei der Anzahl der Ziffern? Führen Sie die Menschen nicht in die Irre.

 
A1exPit:

OrderOpenPrice - der Eröffnungskurs des ausgewählten Auftrags - es ist egal, welche Währung verwendet wird, es wird der Preis angegeben.

Der OrderOpenPrice, so wie ich ihn verstehe, gibt genau das her, was ich brauche. Aber nur, wenn die Einzahlungswährung der Dollar und das gehandelte Paar EUR/USD ist. In diesem Fall ist es so, als ob der OrderOpenPrice den Wechselkurs der Basiswährung zur Einzahlungswährung zum Zeitpunkt der Auftragseröffnung speichert, so dass Sie die Einzahlung leicht berechnen können.

Wenn aber mindestens eine dieser Bedingungen nicht erfüllt ist, wie können wir dann den Wert der Kaution für einen einzelnen Auftrag ermitteln? Wo kann man den Kurs der Basiswährung einer Notierung im Verhältnis zur Währung des Depots zum Zeitpunkt der Eröffnung finden?

Ja, wir haben den Zeitpunkt der Auftragseröffnung auf die Sekunde genau. Aber was können wir bekommen? Höchstens - die Parameter der Minutenkerze des gewünschten Symbols. Aber niemals den genauen Wert des Zinssatzes, der für die Berechnung der Kaution verwendet wird. Aber die Funktion AccountMargin bekommt sie irgendwie! Es wäre sehr interessant zu erfahren, wie genau.