Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересует активность в Маркете? Заходи и отслеживай!
Dima DD
205
Dima DD 2014.12.11 11:57 

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

 

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

  //----  расчёт лота

       int MaxRisk= 5;

 

        double Free = AccountFreeMargin();

       double One_Lots =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 One_Lots = 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
Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. - - Категория: общее обсуждение
Aleksey Lebedev
6033
Aleksey Lebedev 2014.12.11 12:03  
OrderCalcMargin посмотрите.
transcendreamer
3114
transcendreamer 2014.12.11 13:40  


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

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

Dima DD
205
Dima DD 2014.12.12 04:50  
    //----  расчёт лота
       double m_b;
       double Free = AccountInfoDouble(ACCOUNT_FREEMARGIN);   //средства    
       double One_Lots = 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);  
       
    //--------------------------------------
Пробывал так, но значения маржи с калькулятором не совпадает.
Dima DD
205
Dima DD 2014.12.12 08:11  

Спасибо. 

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


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


transcendreamer
3114
transcendreamer 2014.12.12 11:22  

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

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

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий