Вычисление максимального лота

 
Поскажите как можно вычислить максимальный размер лота которым я могу открыться, например, по паре EURGBP, как вариант, конечно можно перебирать все лоты через минимальный шаг и вызывать AccountFreeMarginCheck(), но может есть решение получше?
 
MarketInfo(Symbol(),MODE_MAXLOT);
https://docs.mql4.com/ru/common/MarketInfo
 
xeon:
MarketInfo(Symbol(),MODE_MAXLOT);
https://docs.mql4.com/ru/common/MarketInfo

Нет, я имею в виду как вычислить суммарный объем всех сделок на счете которым я могу открыться (на которые хватит свободных средств), а не макс. лот на одну сделку

 

теперь понятно что вы хотите

я пользуюсь этой функцией

//============================ Расчет лота =======================================
double LotMM(string Sym,int Tip,double LotPercent){

    double TestLot,NewLot,AM,AFM,AFMC,Max;
    double MinLot   = MarketInfo(Sym,MODE_MINLOT); 
    double StepLot  = MarketInfo(Sym,MODE_LOTSTEP); 
    double MaxLot   = MarketInfo(Sym,MODE_MAXLOT); 
    double Mdig;
    int TipTest;
    switch(Tip){
       case 0 : TipTest = 0; break;                                  
       case 1 : TipTest = 1; break;                                 
       case 2 : TipTest = 0; break;                                 
       case 3 : TipTest = 1; break;                                  
       case 4 : TipTest = 0; break;
       case 5 : TipTest = 1; break;
    }
    AM  = AccountMargin(); 
    AFM  = AccountFreeMargin();                              //(Свободно)значение свободных средств, разрешенных для открытия позиций на текущем счете.  
    AFMC = AccountFreeMarginCheck(Sym,TipTest,StepLot);      //Размер свободных средств, которые останутся после открытия указанной позиции по текущей цене на текущем счете
    if(AFM>AFMC){
    double SUMM = AFM*LotPercent/100;     //  сумма  процентов 
    double MIN  = AFM+AM-AFMC;            //  Сумма на мин лот 
    int KVO     = SUMM/MIN;               //  Сколько мин лотов из указанной суммы 
    NewLot      = KVO*StepLot;            //  полученный лот 
    }
    if(NewLot>MaxLot){NewLot=MaxLot;}
    if(NewLot<MinLot){NewLot=MinLot;}

return(NewLot);
}

string Sym - Символ

int Tip - Тип ордера (BUY,SELL, и т.д.)

double LotPercent - процент от свободных средств

надеюсь разберетесь

 
xeon:

теперь понятно что вы хотите

я пользуюсь этой функцией

//============================ Расчет лота =======================================

string Sym - Символ

int Tip - Тип ордера (BUY,SELL, и т.д.)

double LotPercent - процент от свободных средств

надеюсь разберетесь

большое спасибо, то что надо!

 

У меня чуть проще вариант...


double ДОСТУПНОЛОТ=AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
 
kombat:

У меня чуть проще вариант...


double ДОСТУПНОЛОТ=AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);

Плюс нормализовать до ДигитсМинЛот, плюс проверить, что больше-меньше, если ДОСТУПНОЛОТ меньше, то из полученного после нормализации 1 минлот вычесть :). Но обычно этого ничего не надо.

 

Ну звиняйте... ;)))

Привык что многие параметры без надобности.


Тем более спрашивали КАК расчитать,

а КАК причесать для применения эт дело десятое...

 
Bookkeeper:
kombat:

У меня чуть проще вариант...


double ДОСТУПНОЛОТ=AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);

Плюс нормализовать до ДигитсМинЛот, плюс проверить, что больше-меньше, если ДОСТУПНОЛОТ меньше, то из полученного после нормализации 1 минлот вычесть :). Но обычно этого ничего не надо.

         Lots=NormalizeDouble(Lots/MarketInfo( Symbol(),MODE_LOTSTEP), 0)*MarketInfo( Symbol(),MODE_LOTSTEP);
и можно и нужно получить лот с правильным шагом
 
Michael:

... как вычислить суммарный объем всех сделок на счете которым я могу открыться (на которые хватит свободных средств), ...

Весёлые вы однако ребята :)

Никак раньше не мог понять для чего плечо 200:1, 500:1 придумали, считал что для того чтобы процесс слива 1-го депо надолго не затягивался :)

Что ж это за экстрим-трейдинг такой, когда на всю маржу открываешься?

Поделитесь если не секрет.

Очень редко на реале даже с учётом доливок по тренду и хеджа позволяю держать суммарную позицию более 30% депозита.

 

А чегой не повеселится то...

1. Расчёт может нужен для последующих расчётов, а не для открытия

2. По классике на сделку убыток не более 2%

но не указано собственно количество оных сделок...

А посему и повеселится не грех, если открываться на максдепо со стопом в 2%

гулять так гулять, сливать так сливать

а лоси летят, летят высоко...

я им помашу депой :)))

(с)


Кстати, без нормализации нормально открывается.

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