Как поставить лот в пропорции от текущего бюджета?

 
Добрый день!
Какой формулой описать (кодом)?
Мне нужно выставить лот который равен n % от текущего баланса.

И если добить до целого, если по инструменту не выставляться дробное значение лота. 

Спасибо
 
Andrey:
Добрый день!
Какой формулой описать (кодом)?
Мне нужно выставить лот который равен n % от текущего баланса.

И если добить до целого, если по инструменту не выставляться дробное значение лота. 

Спасибо

Пример: Money Fixed Risk. Эксперт на базе торгового класса CMoneyFixedRisk - класса для реализации алгоритма торговли с фиксированным уровнем риска. Обязательное требование - указание стоплосса при отсылке торгового приказа.

Money Fixed Risk
Money Fixed Risk
  • голосов: 13
  • 2016.12.16
  • Vladimir Karputov
  • www.mql5.com
Пример для расчёта размера лота в зависимости от риска на сделку.
 
Vladimir Karputov:

Пример: Money Fixed Risk. Эксперт на базе торгового класса CMoneyFixedRisk - класса для реализации алгоритма торговли с фиксированным уровнем риска. Обязательное требование - указание стоплосса при отсылке торгового приказа.

Спасибо, но нужен по лоту % , а не по убытку.
 

А в чем проблема-то ?

Получаете Эквити соответствующей функцей, умножаете на коэффициент - получаете лот.  Фактически, это торговля с равным плечом.

Что не так ?

 

Лот = Баланс * РискВПроцентах / (Плечо * МаржаЗа1Лот)

Вместо баланса возможно использовать и эквити.

Объем лота и риск по такой формуле нормализован к плечу 1:100
 

// Globals-------------

extern int MoneyManagement = 0;

 (тут ставите цифру в %% от баланса(депозита): 10, 20, 30......)

 

//Lots------------------

     Lots = 0;

     if( MoneyManagement > 0 )

     {

     MonMen = 100000/MoneyManagement;

     Lots = NormalizeDouble((AccountBalance()/MonMen),1);

     if (Lots < 0.1) {Lots = 0.1;}

     if (Lots > 10) {Lots = 10;}

     }

     if( MoneyManagement == 0) {Lots = 1;}

//Lots==================    

 
Artemij:

// Globals-------------

extern int MoneyManagement = 0;

 (тут ставите цифру в %% от баланса(депозита): 10, 20, 30......)

 

//Lots------------------

     Lots = 0;

     if( MoneyManagement > 0 )

     {

     MonMen = 100000/MoneyManagement;

     Lots = NormalizeDouble((AccountBalance()/MonMen),1);

     if (Lots < 0.1) {Lots = 0.1;}

     if (Lots > 10) {Lots = 10;}

     }

     if( MoneyManagement == 0) {Lots = 1;}

//Lots==================    

Спасибо, а что за переменные?
-100000?

if (Lots < 0.1) {Lots = 0.1;}

     if (Lots > 10) {Lots = 10;}


Можете текстом расписать, что значит каждая строчка?

Спасибо)

 

Привет!


сначала надобно так определить максималный размер маржи в % .

Потом оттуда расчитываем размер лота. 

 
Andrey:
Спасибо, а что за переменные?
-100000?

if (Lots < 0.1) {Lots = 0.1;}

     if (Lots > 10) {Lots = 10;}


Можете текстом расписать, что значит каждая строчка?

Спасибо)


// Globals-------------

extern int MoneyManagement = 0;

 (тут ставите цифру в %% от баланса(депозита): 10, 20, 30......)

 

//Lots------------------

     Lots = 0;

(Lots - это финальный размер лота, на который будет открываться позиция)

     if( MoneyManagement > 0 )

     {

     MonMen = 100000/MoneyManagement;

     Lots = NormalizeDouble((AccountBalance()/MonMen),1);

(тупо арифметика:

Предположим, MoneyManagement = 20

9 872 $ / (100000/20)=1.9744

NormalizeDouble = округление до первого знака: Lots=2.0)

     if (Lots < 0.1) {Lots = 0.1;}

     if (Lots > 10) {Lots = 10;}

(Если ВСЁ ПЛОХО, лот будет 0,1

Если всё хорошо, больше 10 лотов ставить позицию не стоит. Будет большое проскальзывание)

     }

     if( MoneyManagement == 0) {Lots = 1;}

(Функция выключена, все позиции будут открываться на 1.0 лот)

//Lots==================    

……………

ticket = OrderSend("EURUSD",OP_BUY,Lots,Ask,50,0,0," ",1111,0,GreenYellow);

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Alexander Ivanov:

Привет!


сначала надобно так определить максималный размер маржи в % .

Потом оттуда расчитываем размер лота. 


Если предполагается открытие больше одной позиции одновременно, то можно и так.

 
Artemij:

Если предполагается открытие больше одной позиции одновременно, то можно и так.

Как так?
За расшифровку спасибо