Wie man den "Prozentsatz der Marge" programmatisch abruft

 

Im Fenster "Vertragsspezifikationen" des Terminals gibt es einen Punkt "Prozentsatz der Marge". Er sollte eigentlich von SymbolInfoDouble() zurückgegeben werden, aber ich habe keinen Wert unter seinen Spezifizierern gefunden, der es erlaubt, diesen "Prozentsatz der Marge" herauszufinden. Wie kann man sie programmatisch erhalten?


 
Was bedeutet dieser Prozentsatz der Gewinnspanne?
 
Alexey Viktorov:
Was bedeutet dieser Prozentsatz der Gewinnspanne?
Er wird bei der Berechnung der Marge für den CFD verwendet. Siehe die Beschreibung von ENUM_SYMBOL_CALC_MODE.
 

Entschuldigen Sie die unvollständige Frage, ich hätte deutlicher fragen sollen.

Was ist der Zweck der Frage? Um zu prüfen, ob die Spanne richtig/falsch berechnet ist? Ist dies nicht der Fall, kann er anhand der Formel in der Beschreibung berechnet werden. Und was macht man dann damit?

 
Alexey Viktorov:

Entschuldigen Sie die unvollständige Frage, ich hätte deutlicher fragen sollen.

Was ist das Ziel? Um zu überprüfen, ob die Spanne richtig oder falsch berechnet wurde?

Mit der richtigen Fantasie kann man sich viele Ziele ausdenken. :) Und schon gar nicht, um zu prüfen, ob sie "richtig oder falsch" sind.

Ist dies nicht der Fall, kann er anhand der Formel in der Beschreibung berechnet werden.

Wie? Nun, dafür ist dieser "Margenprozentsatz" gedacht. Sie schlagen vor, dass wir es per Hand eintippen?) Der Code muss in der Lage sein, diese Daten programmatisch abzurufen.

Und was soll man dann damit machen?

Nun stellt sich die Frage, wie der Wert "Prozentualer Anteil der Marge" programmatisch ermittelt werden kann. Wenn sie in der Tabelle steht, muss es möglich sein, sie programmgesteuert abzurufen. Und was als nächstes zu tun ist, ist eine andere Frage, die für dieses Thema nicht relevant ist.
 

sieheSymbolInfoDouble

SymbolInfoDouble(symbol, SYMBOL_MARGIN_INITIAL);
SymbolInfoDouble(symbol, SYMBOL_MARGIN_MAINTENANCE);
 
Taras Slobodyanik:

siehe SymbolInfoDouble


Leider ist das nicht der Fall. In MT4 sind diese Werte meistens gleich Null.
 

Ist das in Ordnung?

double procentMgn;
procentMgn=AccountBalance()*100/MarketInfo("GOLD",MODE_MARGINREQUIRED);
 
Renat Akhtyamov:

Ist das in Ordnung?

Nein, das wird es nicht.

1. Die Funktion MarketInfo() ist veraltet.

2) MODE_MARGINREQUIRED liefert nur für lange Positionen das richtige Ergebnis, für kurze Positionen schlägt es fehl.

3) MODE_MARGINREQUIRED liefert das Ergebnis bereits in der Depotwährung, was ich nicht brauche.

4. Ich brauche keinen Prozentsatz der Einlage. Ich brauche nur den Wert des Parameters "margin percentage" für das Symbol. Und ich kann selbst berechnen, was ich brauche.

 
ir0407:

Nein, das wird es nicht.

1. Die Funktion MarketInfo() ist veraltet.

2) MODE_MARGINREQUIRED liefert nur für lange Positionen das richtige Ergebnis, für kurze Positionen ist es falsch.

3) MODE_MARGINREQUIRED liefert Ergebnisse in der Depotwährung, die ich nicht benötige.

4. Ich brauche keinen Prozentsatz der Kaution. Ich benötige nur den Wert "Prozentsatz der Marge" für das Symbol. Und ich kann es selbst berechnen.

Wenn Sie sie für MT5 benötigen, gehen Sie in einen anderen Forumsbereich.

Sie sind nicht überrascht von Ihrem Allgemeinwissen, oder noch schlimmer:

1) Es handelt sich nicht um die Funktion MarketInfo(), sondern um einen Ausdruck, dessen Ergebnis die Berechnung eines Prozentsatzes von

2. Sie haben nicht mindestens 4 Dezimalstellen, so dass die prozentuale Spanne für Long und Short gleich ist.

3. einfach multiplizieren

procentMgn

Sie können 0,01 verwenden, und Sie werden zufrieden sein.

 
ir0407:

Mit der richtigen Vorstellungskraft kann man sich viele Ziele ausdenken. :) Und schon gar nicht für den Richtig/Falsch-Test.

Wie funktioniert das? Sie benötigen genau diesen "Prozentsatz der Marge". Soll ich es von Hand eintippen?) Der Code sollte in der Lage sein, ihn programmatisch zu erhalten.

Nun stellt sich die Frage, wie der Wert "Prozentualer Anteil der Marge" programmatisch ermittelt werden kann. Wenn sie in der Tabelle steht, muss es möglich sein, sie programmgesteuert abzurufen. Und was als nächstes zu tun ist, ist eine andere Frage, die für dieses Thema nicht relevant ist.

Ja, nun... Fantasie ist alles... Ich verstehe einfach nicht, warum Menschen, die versuchen, Ihnen zu helfen, über das fantasieren sollten, worüber Sie fantasieren? Aber das ist ja auch nicht die Frage.

Wie bekommen Sie das, was Sie brauchen, aus dieser Formel heraus?

Die Formel selbst lautet: Marge = Lots *ContractSize*MarketPrice*Percentage/100

Daher Prozentsatz = Marge/(Lose *Vertragsgröße*Marktpreis/100)

ir0407:

1. Die Funktion MarketInfo() ist obsolet.

Sie steht noch nicht auf der Liste der veralteten Funktionen. Daher wird der fehlende Wert zur Bestimmung des Prozentsatzes der Gewinnspanne ermittelt.

MarketInfo(_Symbol, MODE_MARGINREQUIRED);

Nachdem Sie alle Daten zum aktuellen Zeitpunkt und zum aktuellen Preis erhalten haben, können Sie die bei der Eröffnung des Auftrags einbehaltene Marge zum Eröffnungskurs des Auftrags leicht neu berechnen.

Wenn Sie es für mql5 benötigen, sollten Sie

bool  SymbolInfoMarginRate( 
   string             name,                     // символ 
   ENUM_ORDER_TYPE    order_type,               // тип ордера 
   double&            initial_margin_rate,      // коэффициент взимания начальной маржи 
   double&            maintenance_margin_rate   // коэффициент взимания поддерживающей маржи 
   );
Устаревшие функции - Справочник MQL4
Устаревшие функции - Справочник MQL4
  • docs.mql4.com
Устаревшие функции - Справочник MQL4