# MarginRate

Hallo,

hat jemand eine Idee wie ich die Initial Margin auslese?

Mit

`SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)`

gehts nicht, was ich auch verstehe, weil es macht ja einen Unterschied welche OrderType ich verwende

Mir gehts darum, das ich für die Kalkulation der Margin die Margin kalkuliere. Zu diesem Zeitpunkt habe ich noch keine Position im Markt.

danke

Schau mal hier: https://www.mql5.com/en/code/1578

Da gib't diese Funktion:

```//+------------------------------------------------------------------+
//| Lot size calculation for opening a short position                |
//+------------------------------------------------------------------+
/*                                                                   |
Margin_Mode external variable specifies the lot value calculation   |
method                                                              |
0 - MM for an account free funds                                    |
1 - MM for an account balance                                       |
2 - MM for losses share from an account free funds                  |
3 - MM for losses share from an account balance                     |
4 - MM fixed Lotsize                                                |
by default - MM for an account free funds                           |
//+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
if Money_Management is below zero,  trade function                  |
uses Money_Management absolute value rounded to the                 |
nearest standard value as a lot size.                              |
*///                                                                 |
//+------------------------------------------------------------------+
double SellLotCount
(
string symbol,
double Money_Management,
int Margin_Mode,
int STOPLOSS,
uint Slippage_
)```

Ich denke, das ist was Du suchst.

• www.mql5.com
Trade functions library designed for use in the code of scripts and Expert Advisors depending on a broker. As a large number of the Expert Advisors using this library was placed in Code Base, it was decided to perform four variants of its program code to use these Expert Advisors with any broker who offers trading on financial markets using...

Carl Schreiber:

Schau mal hier: https://www.mql5.com/en/code/1578

Da gib't diese Funktion:

Ich denke, das ist was Du suchst.

genau daran scheitere ich ja aktuell

ich habe zu dem Zeitpunkt keine Position offen. Angenommen ich will für einen Trade 5% der Margin einsetzen. Um die Lotzahl zu berechnen brauche ich dann die Margin_Rate.

Bei Forex kein Problem, da ist diese überlicherweise 1

bei Indices geht das aber nicht, da ist die Margin Rate nicht 1, da muss man dann eben diese mit Kalkulieren

`https://www.mql5.com/de/docs/constants/environment_state/marketinfoconstants`

jetzt kann ich mir ja die Lotsize ausrechnen

für Forex, als Risiko gebe ich den Prozentsatz ein, welchen ich als Margin verwenden will

```         ContractSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
fullmargin = AccountInfoDouble(ACCOUNT_BALANCE)*SymbolLeverage;

Lot1 = NormalizeDouble(fullmargin/ContractSize/100*risiko,2);

```

das funktioniert auch Perfekt, weil die 1 kann ich ignorieren

für CFD wäre das dann

```

nur das eben

`SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)`

immer 0 bringt, und daher eine Division durch 0 den EA beendet

was mich auch wundert, es gibt in der Symbol übersicht, die Initial Margin long und short, aber in MQL5 gibts nur Initial Margin

Du musst dir die Rates von deinem Broker holen und dann als Konstanten im EA verwenden.

Jeder Broker hat Listen wo die Margin für das Symbol drin steht.

Blöd aber MQ denkt wohl ähnlich.

Christian:

Du musst dir die Rates von deinem Broker holen und dann als Konstanten im EA verwenden.

Jeder Broker hat Listen wo die Margin für das Symbol drin steht.

Blöd aber MQ denkt wohl ähnlich.

das habe ich befürchtet

die Frage ist halt, warum trägt man es dann ein, böses Spiel

sagt mal ist bei der

ENUM_SYMBOL_CALC_MODE

ganz am Anfang, also der Wert 1, der Mode_Forex den gibts ja schon immer, neu dazugekommen?

Hintergrund: ich hab 2 Broker, bei beiden hab ich abgefragt, was für einen Calc Mode diese verwenden.

Broker 1: steht in den Symbol Eigenschaften Mode_CFD, und als Ergebnis bekomme ich 2, was ja Mode_Futures wäre

Broker 2: steht im Symbol CFDLEVERAGE und als Ergebnis bekomme ich 4, was ja CFDIndex wäre

Könnte es sein, dass die Demokonten (Spezifikationen) vom Broker etwas schlampig oder eigenwillig eingerichtet worden sind?

Carl Schreiber:
Könnte es sein, dass die Demokonten (Spezifikationen) vom Broker etwas schlampig eingerichtet worden sind?

liegt nicht am Demo, ich hab live das gleiche Ergebnis,

bei beiden Brokern

Dann schick denen Deinen Code (zusammen mit einem Screenshot?) und bitte sie um Aufklärung?

ich weis ja nicht was da nicht stimmt, aber da hat Metaquotes was mächtig verhaut, die ENUM Aufzählung ist nämlich falsch

Wenn ich bei Broker 1 sage

`Print(SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE));`

kommt als Ergebnis 2, was bei der ENUM ja SYMBOL_CALC_MODE_FUTURES entspricht

wenn ich das jetzt erweitere, und die Print Ausgabe schön mache

```  ENUM_SYMBOL_CALC_MODE TradeCalcMode = (ENUM_SYMBOL_CALC_MODE)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE);

dann bekomme ich als Ergebnis: SYMBOL_CALC_MODE_CFD

sorry, aber das passt irgendwie nicht zusammen

da hat MQ einen mächtigen Bock geschossen

Kannst Du das in mit dem kl.  Skript dokumentieren und dann mit dem Ausdruck hier veröffentlichen?

Ich hab zZ. nur Forex eines MQ-Demokontos, da gibts nur Forex

Новая версия платформы MetaTrader 5 build 2360: Расширение интеграции с SQLite
• 2020.03.28
• www.mql5.com
В пятницу 6 марта 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
Dateien:
Grund der Beschwerde: