- Как рассчитать процент используемых средств, если открыты противоположные позиции?
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
- Советники: Billy expert
Добрый день!
Пример: Money Fixed Risk. Эксперт на базе торгового класса CMoneyFixedRisk - класса для реализации алгоритма торговли с фиксированным уровнем риска. Обязательное требование - указание стоплосса при отсылке торгового приказа.
- голосов: 13
- 2016.12.16
- Vladimir Karputov
- www.mql5.com
Пример: Money Fixed Risk. Эксперт на базе торгового класса CMoneyFixedRisk - класса для реализации алгоритма торговли с фиксированным уровнем риска. Обязательное требование - указание стоплосса при отсылке торгового приказа.
А в чем проблема-то ?
Получаете Эквити соответствующей функцей, умножаете на коэффициент - получаете лот. Фактически, это торговля с равным плечом.
Что не так ?
Лот = Баланс * РискВПроцентах / (Плечо * МаржаЗа1Лот)
Вместо баланса возможно использовать и эквити.
// 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==================
// 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==================
if (Lots < 0.1) {Lots = 0.1;}
if (Lots > 10) {Lots = 10;}
Можете текстом расписать, что значит каждая строчка?
Спасибо)
Привет!
сначала надобно так определить максималный размер маржи в % .
Потом оттуда расчитываем размер лота.
Спасибо, а что за переменные?
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);
- www.metatrader5.com
Привет!
сначала надобно так определить максималный размер маржи в % .
Потом оттуда расчитываем размер лота.
Если предполагается открытие больше одной позиции одновременно, то можно и так.
Если предполагается открытие больше одной позиции одновременно, то можно и так.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования