Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Calculate Lot Percent - библиотека для MetaTrader 5

Просмотров:
56
Опубликован:
Обновлен:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Функция  CalculateLot предназначена для автоматического вычисления объема торгового лота на основе принципов риск-менеджмента. Она позволяет трейдеру задать процент от баланса счета, которым он готов рискнуть в сделке, и на основе этого определить оптимальный объем позиции.

Синтаксис

double CalculateLot(double riskPercent, double stopLossPips);

Параметры

Параметр        Тип     Описание
riskPercent     double  Процент от текущего баланса счета, которым трейдер готов рискнуть. Указывается в абсолютном значении (например, 2.0 = 2% от баланса).
stopLossPips    double  Расстояние до уровня Stop Loss в пунктах. Для 5-значных котировок указывается количество стандартных пунктов (например, 1000 = 1000 пунктов = 100 пипсов).

Возвращаемое значение

Функция возвращает нормализованный объем лота ( double ), который:

  • Соответствует правилам округления до шага изменения объема ( VOLUME_STEP );

  • Не превышает максимально допустимый объем ( VOLUME_MAX );

  • Не меньше минимально допустимого объема ( VOLUME_MIN ).

Если расчетное значение выходит за допустимые пределы, функция возвращает ограниченное значение (minLot или maxLot).

Алгоритм работы

  1. Получение параметров счета и символа

    • Текущий баланс ( ACCOUNT_BALANCE )

    • Стоимость тика ( SYMBOL_TRADE_TICK_VALUE )

    • Минимальный, максимальный и шаг изменения лота

  2. Расчет суммы риска в валюте депозита

    riskAmount = баланс × (риск% / 100)

  3. Расчет объема лота

    lotSize = riskAmount / (stopLossPips × tickValue)

  4. Нормализация и валидация

    • Округление до ближайшего шага ( VOLUME_STEP )

    • Проверка на минимальное и максимальное значение

Примеры использования

Пример 1. Базовое использование в советнике

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
{
   //--- Задаем риск 1.5% от баланса и стоп-лосс 500 пунктов
   double lot = CalculateLot(1.5, 500);
   
   //--- Проверяем, что лот рассчитан корректно
   if(lot > 0.0)
     {
      //--- Получаем текущие цены
      double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
      
      //--- Рассчитываем уровни
      double sl = ask - 500 * _Point;
      double tp = ask + 1500 * _Point;
      
      //--- Открываем позицию
      trade.Buy(lot, _Symbol, ask, sl, tp);
     }
}


Пример 2. Использование в скрипте с проверкой на ошибки

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
{
   double riskPercent  = 2.0;   // Риск 2% от баланса
   double stopLossPips = 1000;  // Стоп-лосс 1000 пунктов
   
   double lot = CalculateLot(riskPercent, stopLossPips);
   
   //--- Выводим информацию о расчете
   Print("=== Результаты расчета лота ===");
   Print("Баланс счета: ", AccountInfoDouble(ACCOUNT_BALANCE));
   Print("Риск, %: ", riskPercent);
   Print("Сумма риска: ", AccountInfoDouble(ACCOUNT_BALANCE) * riskPercent / 100.0);
   Print("Стоп-лосс, пунктов: ", stopLossPips);
   Print("Стоимость тика: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE));
   Print("Рассчитанный лот: ", lot);
   Print("================================");
   
   if(lot <= 0.0)
     {
      Alert("Ошибка: не удалось рассчитать лот. Проверьте параметры риска и стоп-лосса.");
     }
}
WPR Monitoring MTF Trend WPR Monitoring MTF Trend

мониторинг различных тенденций временных рамок в одной временной рамке

SessionRangeBoxes SessionRangeBoxes

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

Modern Time Panel - Candle Time Modern Time Panel - Candle Time

Modern Time Panel для MT5 Modern Time Panel - это элегантный, минималистичный пользовательский индикатор для MetaTrader 5, который поможет вам точно отслеживать время. Закрепленный в правом верхнем углу вашего графика, он отображает текущее брокерское время, местное время и обратный отсчет до следующей свечи (нового бара). Благодаря независимому 1-секундному таймеру отсчет идет непрерывно, даже если рынок медленный или нет входящих тиков. Полностью настраиваемый и работающий в темном режиме, он является идеальным ненавязчивым инструментом, чтобы вы никогда не пропустили закрытие свечи.

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.