Размера лота в зависимости от риска

Здесь мы рассмотрим способ расчета размера лота в mql4 и mql5 так, чтобы при закрытии сделки по стоп-лоссу, получался убыток, который будет заранее указываться во входных параметрах советника.

Вначале зададим этот самый входной параметр. В нём мы будем указывать процент от депозита (баланса торгового счета), которым мы готовы рискнуть, в случае если сделка закроется с убытком по стоп-лоссу.

input double RiskPercent = 1.00; // Риск в % от депозита
Добавляем возможность указывать риск в настройках торгового робота

Например, если баланс счета составляет 1000 USD, и в настройках задан риск 1%, то при закрытии сделки по стоп-лоссу будет получен убыток -10 долларов.

Далее сама функция расчета лота от риска:

//+------------------------------------------------------------------+
//| Расчитывает размер лота по риску от размера стоп-лосса           |
//+------------------------------------------------------------------+
double GetVolumeByRisk(double price_open, double price_stoploss)
  {
   // Текущий баланс
   double balance = AccountInfoDouble(ACCOUNT_BALANCE);
   // Сумма средств, которые рискуем потерять
   double balance_risk = balance * RiskPercent / 100;
   // Размер минимального изменения цены в пунктах за один тик
   double tick_size = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
   // Стоимость тика для прибыльной позиции
   double tick_value = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE);
   // Размер стоп-лосса в пунктах цены
   double stoploss_size = MathAbs(price_open - price_stoploss);
   // Сумма риска в зависимости от размера стоп-лоссса 
   double stoploss_risk = stoploss_size / tick_size * tick_value;
   // Искомый результат - размер лота в зависимости от риска и размера стоп-лосса
   double volume = balance_risk / stoploss_risk ;
   // Нормализация размера лота
   volume = NormalizeLots(volume);
   // Возвращаем готовый к использованию размер лота
   return volume;
  }
Функция GetVolumeByRisk

Функция принимает цену открытия будущей сделки - price_open и цену уровня стоп-лосс - price_stoploss. Если размер стоп-лосса в пунктах известен заранее, например, указывается во входных параметрах робота для Metatrader, то можно изменить функцию GetVolumeByRisk, убрав параметр price_stoploss, и в теле функции использовать указанное ранее значение стоп-лосса в пунктах умноженное на _Point, вместо переменной stoploss_size.

А так как цена уровня стоп-лосс может быть не только фиксированной, но и, например, может рассчитываться по ценам фракталов или других индикаторов, то мы используем данный вариант функции с параметром price_stoploss и расчетом количества пунктов стоп-лосса в теле функции.

MQL функция GetVolumeByRisk работает как есть в обоих версиях торгового терминала: в МТ4 и МТ5.

Функция NormalizeLots подробно рассмотрена в этой статье.

Если вы нашли в посте идеи для своего нового форекс робота или для усоврешенствования существующего, то наши специалисты помогут вам воплотить эти идеи в жизнь. Закажите создание или доработку вашего советника на странице Контакты.

А если у вас еще нет торгового счета для заработка на Форекс, то откройте его у надежного форекс брокера Forex4You. Здесь самые лучшие условия для начала карьеры трейдера на центовом счете, с последующим переходом на профессиональные долларовые счета. Перейти на сайт брокера Forex4You >>

Комментарии

Комментариев пока нет. Будьте первым!

Добавить комментарий

Войдите в аккаунт или зарегистрируйтесь, чтобы добавить комментарий
Быстрая авторизация не покидая страницы