Как рассчитывается маржа счета?

 

Я хочу знать, как я могу рассчитать маржу счета, которая показана здесь:

Я знаю, что могу получить это значение с помощью функции: AccountInfoDouble (ACCOUNT_MARGIN)

Но я не хочу этим пользоваться. Я просто хочу написать свою функцию, чтобы получить это значение.

Пожалуйста, дайте мне знать, что я могу сделать

 
https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants

Search ENUM_SYMBOL_CALC_MODE
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
To obtain the current market information there are several functions: SymbolInfoInteger(), SymbolInfoDouble() and SymbolInfoString(). The first parameter is the symbol name, the values of the second function parameter can be one of the identifiers of ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE and ENUM_SYMBOL_INFO_STRING. Some symbols...
 
Roman :
https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants

Search  ENUM_SYMBOL_CALC_MODE

Я получаю некоторые расчеты. Но это не работает, когда я пытаюсь использовать формулы. Нет никакой разницы. Подскажите, пожалуйста, что я могу сделать? Я использую хедж-счет. И когда я это делаю, для одной сделки используется полная маржа, тогда как для противоположной сделки используется половина маржи и т. Д. Как я, вероятно, могу узнать, что я могу сделать? Поэтому я просто хочу знать, как рассчитывается маржа ToolBox. Можете ли вы предложить мне функцию для этого, кроме OrderCalcMargin (), это бесполезно.

 
jaffer wilson:

Я получаю некоторые расчеты. Но это не работает, когда я пытаюсь использовать формулы. Нет никакой разницы. Подскажите, пожалуйста, что я могу сделать? Я использую хедж-счет. И когда я это делаю, для одной сделки используется полная маржа, тогда как для противоположной сделки используется половина маржи и т. Д. Как я, вероятно, могу узнать, что я могу сделать? Поэтому я просто хочу знать, как рассчитывается маржа ToolBox. Можете ли вы предложить мне функцию для этого, кроме OrderCalcMargin (), это бесполезно.

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate

Documentation on MQL5: Market Info / SymbolInfoMarginRate
Documentation on MQL5: Market Info / SymbolInfoMarginRate
  • www.mql5.com
[in] A double type variable for receiving an initial margin rate. Initial margin is a security deposit for 1 lot deal in the appropriate direction. Multiplying the rate by the initial margin, we receive the amount of funds to be reserved on the account when placing an order of the specified type. [out] A double type variable for...
 
Roman :

https://www.mql5.com/en/docs/marketinformation/symbolinfomarginrate

Не могли бы вы однажды продемонстрировать, как я могу их использовать?

 
jaffer wilson:

Не могли бы вы однажды продемонстрировать, как я могу их использовать?

Everything is written there

smr

 

В документации есть опечатка.
initial_margin_rate [in]

Должно быть
initial_margin_rate [out]

 
Alexey Viktorov :

И как это понимать? Вы вроде поняли как счтать и вдруг опять забыли?


Я запутался в расчетах. Следовательно, я подумал, может ли мне помочь тот, кто уже пробовал. Но я думаю, я должен делать это по-своему.

 
jaffer wilson:

Я запутался в расчетах. Следовательно, я подумал, может ли мне помочь тот, кто уже пробовал. Но я думаю, я должен делать это по-своему.

Я это делал, но если хотите попробуйте по-своему. Только вот формула одна и как ни крути считать надо по этой формуле.

Тут совсем просто. Например: Есть открытые позиции по одному символу. Считаем средневзвешенную цену позиций BUY и количество лотов. Так-же считаем для позиций SELL средневзвешенную цену и количество лотов. Если позиций только по одной, то средневзвешенная цена равна цене открытия позиции. Например получилось, что открыто BUY 2.75 лотов, а позиций SELL 1.15 лотов. Функцией OrderCalcMargin() получаем маржу для лота 1.15, как для SELL так-же и для BUY считаем для лота 1.15. Если получились разные значения маржи, то берём бо́льшее значение и умножаем на коэффициент, полученный как отношение

(SymbolInfoDouble(_Symbol, SYMBOL_MARGIN_HEDGED)/SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE))

В вашем случае SYMBOL_MARGIN_HEDGED в спецификации равно 50, а SYMBOL_TRADE_CONTRACT_SIZE = 100 получается 50/100=0.5

И для оставшегося объёма 2.75-1.15=1.6 получаем маржу так-же функцией OrderCalcMargin() и плюсуем к предыдущему результату.

Вы получили маржу 3.94 для каждой позиции. И если 3.94*0.5 то получим значение маржи показанное на вашем скрине 1.97

Причина обращения: