Как рассчитать лот в mql5?

 

Здравствуйте.

 

В mql4 ставил такой код для рассчёта лота, относительно риска

       //----  расчёт лота
       int MaxRisk= 5;
       double Free = AccountFreeMargin();
       double MarketInfo(Symbol(),MODE_MARGINREQUIRED);
       //double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
       // double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
       double Lots =NormalizeDouble(Free*MaxRisk/100/One_Lots,2); 
       //----
 

Сейчас переделал для mql5

       double Free = AccountInfoDouble(ACCOUNT_FREEMARGIN);   //средства   
       double SYMBOL_MARGIN_INITIAL;                          // маржа для открытия 1лота
       double Lot =NormalizeDouble(Free*MaxRisk/100/One_Lots,2);

Вторую строчку не правильно написал. Слишком большой лот получается.

Как в mql5  обозначается маржа для открытия 1 лота?     https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

Нужна функция, которая по определенной сумме выдает объем сделки для определенного символа.
Нужна функция, которая по определенной сумме выдает объем сделки для определенного символа.
  • www.mql5.com
Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. - - Категория: общее обсуждение
 
OrderCalcMargin посмотрите.
 


верно ли что OrderCalcMargin и OrderCalcProfit являются предпочтительным вариантом чем считать самому?

будет ли это гарантированно работать всегда для инструментов всех типов? (cfd, фьючерсы...)

 
    //----  расчёт лота
       double m_b;
       double Free = AccountInfoDouble(ACCOUNT_FREEMARGIN);   //средства    
       double  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK), m_b);// залог на 1 лот       SYMBOL_MARGIN_INITIAL для фьючерсов
       double Lot =  NormalizeDouble(Free*MaxRisk/100/m_b,2);
       
       
       Print("залог на 1 лот   ", m_b);  
       
    //--------------------------------------
Пробывал так, но значения маржи с калькулятором не совпадает.
 

Спасибо. 

Всё разобрался. Выше код считает верно.


В  калькуляторе робофорекс при плече 1:500 залог маржи =200, и в тестере при 1:500 показывает  маржу =200.


 

недостаток этого метода в том что торговые функции нельзя вызывать из индикаторов

вот это подлость 

 
transcendreamer:

недостаток этого метода в том что торговые функции нельзя вызывать из индикаторов

вот это подлость 

А как для индикатора?

 
Valeri Vakulenko:

А как для индикатора?

считать самому! )))

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