Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 8

 

In der Hilfe heißt es

ENUM_SYMBOL_CALC_MODE

Kennung

Beschreibung

Formel

SYMBOL_CALC_MODE_FOREX

Forex-Modus - Gewinn- und Margenberechnung für Forex

Marge: Lose*Vertragsgröße/Verwendung

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

SYMBOL_CALC_MODE_FUTURES

Futures-Modus - Berechnung von Marge und Gewinn für Futures

Marge: Lose *InitialMargin*Percentage/100

Gewinn: (Schlusskurs-Eröffnungskurs)*TickPreis/TickSize*Lots

SYMBOL_CALC_MODE_CFD

CFD-Modus - Berechnung von Marge und Gewinn für CFD

Marge: Lose *Vertragsgröße*Marktpreis*Prozentsatz/100

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

SYMBOL_CALC_MODE_CFDINDEX

CFD-Index-Modus - Berechnung von Marge und Gewinn für CFD-Indizes

Marge: (Lots*ContractSize*MarketPrice)*TickPrice/TickSize

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

SYMBOL_CALC_MODE_CFDLEVERAGE

CFD Leverage Modus - Berechnung der Marge und des Gewinns für CFD beim Handel mit Leverage

Marge: (Lots*Kontraktgröße*Marktpreis*Prozentsatz)/Leverage

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

SYMBOL_CALC_MODE_EXCH_STOCKS

Börsenmodus - Berechnung der Marge und des Gewinns beim Handel mit Wertpapieren an der Börse

Marge: Lose*Vertragsgröße*OffenerPreis

Gewinn: (Schlusskurs-Eröffnungskurs)*Kontraktgröße*Lose

SYMBOL_CALC_MODE_EXCH_FUTURES

Futures-Modus - Berechnung von Marge und Gewinn für den Handel mit Futures-Kontrakten an der Börse

Marge: Lots*InitialMargin oder Lots*MaintenanceMargin

Gewinn: (Schlusskurs-Eröffnungskurs)*Lots*TickPreis/TickGröße

SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS

FORTS Futures-Modus - Berechnung der Marge und des Gewinns für den Handel mit Futures-Kontrakten auf FORTS. Die Höhe der Marge kann um den Wert MarginDiscount gemäß den folgenden Regeln verringert werden:

1. Wenn der Preis einer Long-Position (Kaufauftrag) niedriger ist als der berechnete Preis, ist MarginDiscount = Lots*((PriceSettle-PriceOrder)*TickPrice/TickSize)

2. Wenn der Preis einer Short-Position (Verkaufsauftrag) höher ist als der Abrechnungskurs, dann ist MarginDiscount = Lots*((PriceOrder-PriceSettle)*TickPrice/TickSize)

wo:

    • PriceSettle - Abrechnungspreis (Clearing) der vorangegangenen Sitzung;
    • PriceOrder - gewichteter Durchschnittspreis einer Position oder Eröffnungskurs, der in der Order (Auftrag) angegeben ist;
    • TickPrice - Tickpreis (Kosten der Preisänderung um einen Punkt);
    • TickSize - Tickgröße (kleinster Schritt der Preisänderung)

Marge: Lots*InitialMargin oder Lots*MaintenanceMargin

Gewinn: (Schlusskurs-Eröffnungskurs)*Lots*TickPreis/TickGröße

SYMBOL_CALC_MODE_SERV_COLLATERAL

Sicherheitenmodus - das Instrument wird als nicht handelsbezogener Vermögenswert auf dem Handelskonto verwendet. Der Marktwert der offenen Position wird auf der Grundlage des Volumens, des aktuellen Marktpreises, der Kontraktgröße und der Liquiditätsquote berechnet. Der Wert wird in den Aktiva verbucht, die dem Eigenkapital zugerechnet werden. Offene Positionen in solchen Instrumenten erhöhen daher die freie Marge und dienen als zusätzliche Sicherheit für offene Positionen in gehandelten Instrumenten.

Marge: nein

Gewinn: nein

Marktwert: Grundstücke*Vertragsgröße*Marktpreis*Liquditätsrate

 
fxsaber:

Das steht in der Hilfe.

Bei allem Respekt, ich werde Sie wieder zum Lesen bringen.

P.S.

Sie können es bekommen, aber wenn wir AUDCAD verwenden, erhalten wir die Marge in AUD-Währung, während das Konto in Dollar geführt wird. Wenn Sie AUDUSD Preis verwenden, erhalten Sie die erforderliche Menge an Marge, aber es ist nicht universell und schlecht, denn es gibt Konten mit Präfixen und Suffixen, und hier beginnt eine ganze Geschichte. Es kann auch sein, dass in der Marktübersicht einfach kein Paar geöffnet ist und die Berechnung in eine Sackgasse führt.

Ein Programm, das mit Geld arbeitet (so der Anspruch der Entwickler), kann es nicht berechnen. Das alte, schlechte und langsame mt4 konnte mit Geld arbeiten, aber das neue und schicke mt5 nicht. Wie das?

 
fxsaber

Verwenden Sie diese Formel aus dem Link:

Wenn wir zum Beispiel die Sicherheiten für CADJPY berechnen, erhalten wir die Sicherheiten in CAD

SymbolInfoDouble("CADJPY",SYMBOL_TRADE_CONTRACT_SIZE) / AccountInfoInteger(ACCOUNT_LEVERAGE)*0.7625 // СADUSD

Ich kann0,7625 sehen, das ist der CADUSD-Preis, aber das Terminal hat nicht einmal ein solches Paar darin.

Ist es so schwierig, die Funktion"MODE_MARGINREQUIRED" mit der "Copypaste"-Methode nach mt5 zu übertragen und damit den Entwicklern das Leben zu erleichtern?

 
Artyom Trishkin:
Ich möchte, dass die Berechnung unabhängig vom Programmtyp erfolgt.
Die Entwickler sind der Meinung, dass die Berechnung der Marge (und einige andere Informationsfunktionen) eine Handelsfunktion ist und in Indikatoren verboten werden sollte. Ich habe einen ernsthaften Thread zu diesem Thema gestartet - die Moderatoren haben ihn sofort gelöscht, anonym wie immer. Jetzt ist es mir egal, ich habe einen kastrierten Indikator ohne Marge in KB gepostet.
 
Vitaly Muzichenko:

Bei allem Respekt, ich werde Sie zu Ihrer Lektüre zurückbringen

Ich gebe zu, ich war unaufmerksam. Ich habe die Berechnung von Margen immer als unnötig empfunden. Insbesondere bei den Indikatoren. Wo kann sie bei Indikatoren notwendig sein?

Ich denke, die Lösung ist sehr einfach. Wenn ich frei bin, werde ich darüber nachdenken.

 
Vitaly Muzichenko:

Sie können es bekommen, aber wenn Sie AUDCAD verwenden, erhalten Sie die Marge in AUD-Währung, und das Konto ist auf Dollar lautend. Wenn wir AUDUSD Preis verwenden, erhalten wir die erforderliche Marge, aber es ist nicht universell und schlecht, denn es gibt Konten mit Präfixen und Suffixen und hier beginnt eine ganze Geschichte. Es kann auch sein, dass in der Marktübersicht einfach kein Paar geöffnet ist und die Berechnung ins Leere läuft.

Und was werden die vier zurückgeben, wenn AUDUSD nicht in der Marktübersicht ist?

Für die spezifische Aufgabe der Randbetrachtung im Indikator ist es möglich, eine Krücke zu konstruieren, indem man die Präfixe und Suffixe berücksichtigt (oder einen Hilfsberater verwendet). Es gibt alles für den Handel.

 
Andrey Khatimlianskii:

Und was werden die vier zurückgeben, wenn AUDUSD nicht in der Marktübersicht ist?

Für die spezielle Aufgabe der Anzeige der Marge im Indikator kann man eine Krücke bauen, die Präfixe und Suffixe berücksichtigt (oder einen Hilfs-EA verwenden). Und für den Handel scheint alles vorhanden zu sein.

Vier wird"MODE_MARGINREQUIRED" zurückgeben )

Alexey Volchanskiy:
Ich denke, dass die Berechnung der Marge (und andere Informationsfunktionen) eine Handelsfunktion ist und in Indikatoren verboten werden sollte. Ich habe einen ernsthaften Thread zu diesem Thema gestartet - die Moderatoren haben ihn sofort gelöscht, anonym wie immer. Jetzt ist es mir egal, ich habe einen kastrierten Indikator ohne Marge in KB gepostet.

Wird es wirklich gehandelt? ))) Aber ja, das Abfeuern ist nicht verboten. Ich frage mich, womit sie handelt, ob sie eröffnet oder schließt oder nur Aufträge ändert?

fxsaber:

Ich gebe zu, ich war unaufmerksam. Ich hatte schon immer keinen Bedarf an einer Margenberechnung. Außerdem ist sie bei Indikatoren nicht erforderlich. Wo kann sie bei Indikatoren notwendig sein?

Ich denke, die Lösung ist sehr einfach. Wenn ich frei bin, werde ich sie erfinden.

Zusätzlich zu den MA und Stochastiks gibt es informative Indikatoren. Zum Beispiel, die Informationen Indikator zu wissen, die Kaution, bevor sie ein Geschäft (beobachten MM), berechnen Sie die Menge und sehen, ob es passt die Bedingungen Ihrer TS oder nicht, um den Handel und warten auf ein anderes Signal. Und dies ist nur ein einziges Beispiel für seine Verwendung.

 
fxsaber:

Ich denke, die Lösung ist sehr einfach. Ich werde es herausfinden, wenn ich frei bin.

Die Lösung kam sofort.
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
  MqlTick Tick;

  return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) /
        (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Dies ist eine Berechnung für FOREX. Der Rest ist eine Analogie.
 
fxsaber:
Die Lösung kam sofort.
// Размер свободных средств, необходимых для открытия 1 лота на покупку
double GetMarginRequired( const string Symb )
{
  MqlTick Tick;

  return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) *
         SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Dies ist die Berechnung für FOREX. Der Rest ist ähnlich.
Vielen Dank, es gibt immer noch einen Fehler mit Yen-Paaren
 
Vitaly Muzichenko:
Vielen Dank, es gibt immer noch einen Fehler mit Yen-Paaren
Ja, ich habe ein bisschen Mist gebaut. Jetzt ist es richtig.