Рассчитать размер залога по символу

 

Как правильно рассчитать размер залога по символу (не по счёту)

 
Выразить объём лота через валюту счёта и разделить на плечо. 
 
PapaYozh:
Выразить объём лота через валюту счёта и разделить на плечо. 

Можете пример привести этого расчёта, например (A*B)/C=??

 
forex2030:

Можете пример привести этого расчёта, например (A*B)/C=??

https://docs.mql4.com/ru/account/accountfreemargincheck

AccountFreeMarginCheck - Информация о счете - Справочник MQL4
AccountFreeMarginCheck - Информация о счете - Справочник MQL4
  • docs.mql4.com
AccountFreeMarginCheck - Информация о счете - Справочник MQL4
 

Этот расчёт не подходит, тут показывает сколько останется свободных средств после открытия ордера лотом
А мне надо знать сколько уже в залоге по открытым позициям символа

 
forex2030:

Этот расчёт не подходит, тут показывает сколько останется свободных средств после открытия ордера лотом
А мне надо знать сколько уже в залоге по открытым позициям символа

Так ведь можно отнять текущую величину залога от того, что останется. Это и будет размером залога.

 
forex2030:

Этот расчёт не подходит, тут показывает сколько останется свободных средств после открытия ордера лотом
А мне надо знать сколько уже в залоге по открытым позициям символа

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

double  AccountFreeMarginCheck(
   string  symbol,     // символ
   int     cmd,        // торговая операция
   double  volume      // количество лотов
   );

Далее вычесть с баланса полученное значение.

 

Сделал так, но получается разница в расчёте
Открыта одна позиция buy лотом 0.07 (баланс =9110.73$)
В терминале Маржа 19.57$, а в расчёте получается 14.00$

double Margin(){
   double res=0.0,lt=0.0;
   double SizeLT=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE);
   int Leverage=(int)AccountInfoInteger(ACCOUNT_LEVERAGE);
   
   for(int i=OrdersTotal()-1; i>=0; i--){ 
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) 
      lt+=OrderLots();}
   
   if(lt>0) res=lt*SizeLT/Leverage;
return(res);}
 
forex2030:

Сделал так, но получается разница в расчёте
Открыта одна позиция buy лотом 0.07 (баланс =9110.73$)
В терминале Маржа 19.57$, а в расчёте получается 14.00$

Нужно лот привести к деньгам. 

 
forex2030:

Сделал так, но получается разница в расчёте
Открыта одна позиция buy лотом 0.07 (баланс =9110.73$)
В терминале Маржа 19.57$, а в расчёте получается 14.00$

к валюте депо не приведено. 

 

Как же сложно когда поверхностно в ответе
Примером бы это лучше показать:

- Нужно лот привести к деньгам. 
- к валюте депо не приведено.

Я же целую функцию разместил, которой будет пользоваться весь мир
и мне не жалко

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