Стратегия Manual Trading Lightweight Utility
Обзор
Оригинальный советник MetaTrader "Manual Trading Lightweight Utility" представляет собой компактную панель с кнопками для переключения между рыночными, лимитными и стоповыми заявками, раздельного управления объёмами и автоматического добавления стоп-лосса и тейк-профита. Эта версия на C# переносит весь рабочий процесс в StockSharp: каждая кнопка панели превращена в параметр стратегии. Алгоритм не генерирует собственных сигналов — он ждёт ручной команды и выполняет её через высокоуровневый API, параллельно контролируя защитные выходы.
Воссозданная функциональность
- Разовые запросы на покупку и продажу. Булевы флаги
BuyRequestиSellRequestимитируют кнопки панели. Переключение параметра вtrueприводит к единовременному выставлению рыночной, лимитной или стоповой заявки в зависимости от выбранного режима и автоматически возвращает флаг вfalse. - Автоматическое или ручное ценообразование отложек. Для каждой стороны можно использовать те же смещения по пунктам (
LimitOrderPointsиStopOrderPoints), что и в MetaTrader, либо указать абсолютную цену. При автоматическом расчёте используется лучший бид/аск, а при их отсутствии — цена закрытия последней свечи. - Независимые объёмы. Можно работать с общим объёмом (
DefaultVolume) или включитьUseIndividualVolumes, чтобы задать отдельные значения для покупки и продажи — аналог переключателя Lot Control в исходном скрипте. - Защита в пунктах. Параметры
TakeProfitPointsиStopLossPointsпереводятся в денежные отступы с помощью биржевогоPriceStep. Стратегия отслеживает завершённые свечи и закрывает позицию рыночной сделкой при пробое защитного уровня. - Журнал с комментариями. Каждое ручное действие фиксируется в логе вместе с текстом
OrderComment, что заменяет визуальный отклик панели.
Логика работы
- Стратегия подписывается на свечной поток, заданный параметром
CandleType. Закрытые свечи дают опорные цены для расчёта отступов и контроля рисков. - На каждой завершённой свече алгоритм:
- Обновляет свойство
VolumeзначениемDefaultVolume— это удобно для визуального контроля в интерфейсе StockSharp. - Отслеживает изменение параметров
BuyRequestиSellRequestи помечает активные запросы. - После проверки
IsFormedAndOnlineAndAllowTrading()исполняет ожидающие команды, вычисляет цены отложенных ордеров и пишет результат в журнал. - Передаёт управление блоку управления рисками, который запоминает цену входа при изменении позиции и закрывает её рыночной сделкой при срабатывании стопа или тейк-профита.
- Обновляет свойство
- После возврата позиции в ноль внутреннее состояние обнуляется, чтобы следующая ручная команда начиналась «с чистого листа».
Параметры
CandleType— тип свечей, на основе которых вычисляются цены и контролируются риски.BuyOrderMode/SellOrderMode— режимыMarketExecution,PendingLimitилиPendingStopдля каждой стороны.UseAutomaticBuyPrice/UseAutomaticSellPrice— включают автоматический расчёт цены отложенных ордеров. При отключении используются значенияBuyManualPrice/SellManualPrice.BuyManualPrice/SellManualPrice— абсолютные цены отложенных ордеров при отключённом автоматическом режиме (оставьте0, чтобы игнорировать).DefaultVolume— общий объём сделок, если индивидуальные объёмы выключены.UseIndividualVolumes— включает аналога Lot Control. Приtrueобъёмы изBuyVolumeиSellVolumeподменяют общее значение.BuyVolume/SellVolume— отдельные объёмы для покупки и продажи.TakeProfitPoints/StopLossPoints— расстояния защитных уровней в пунктах MetaTrader. Ноль отключает соответствующую защиту.LimitOrderPoints/StopOrderPoints— смещения для автоматических лимитных и стоповых цен в пунктах.BuyRequest/SellRequest— одноразовые переключатели, имитирующие кнопки панели. После обработки автоматически возвращаются вfalse.OrderComment— комментарий, который будет добавлен к логам при исполнении команды.
Рекомендации по использованию
- Подберите
CandleTypeпод желаемую детализацию. По умолчанию используется минутный таймфрейм, что близко к тиковой реакции оригинального советника и при этом совместимо с историческими данными. - Определитесь с объёмами: используйте
DefaultVolumeдля симметричной торговли или включитеUseIndividualVolumesи задайте значенияBuyVolume/SellVolume. Объёмы должны быть строго положительными. - Выберите способ расчёта цен отложенных ордеров. Автоматический режим повторяет логику MetaTrader, умножая число пунктов на
PriceStep. Ручной режим требует указать абсолютные значения. - Задайте
TakeProfitPointsиStopLossPoints. При ненулевых значениях стратегия переводит их в денежные расстояния. Если у инструмента не заданPriceStep, в лог выводится предупреждение и защита отключается. - Чтобы отправить заявку, переключите
BuyRequestилиSellRequestвtrue. На следующей закрытой свече стратегия выполнит команду, зафиксирует её в журнале и вернёт флаг вfalse, чтобы не повторять действие автоматически. - Повторите команду при необходимости, снова переключив параметр. Если цена не может быть рассчитана (например, ручное значение равно нулю), запрос будет проигнорирован — скорректируйте настройки и повторите переключение.
Отличия от оригинального скрипта
- Графические объекты MetaTrader заменены параметрами StockSharp. Каждая кнопка или поле панели теперь доступна из интерфейса платформы или через автоматизацию.
- Защитные уровни закрываются рыночными сделками при пробое, а не отдельными стоп/лимит ордерами. Это позволяет использовать высокоуровневый API без управления жизненным циклом заявок.
- При отсутствии котировок лучшего бида/аска автоматические цены рассчитываются по цене закрытия последней свечи, что гарантирует воспроизводимость в тестах без стакана.
Дополнительно
- Цена входа обновляется при каждом изменении чистой позиции. Если вы увеличиваете позицию, защитные уровни пересчитываются относительно свечи, где произошёл новый вход.
- В расчёт стоп-лосса включается текущий спред: к пунктовому расстоянию добавляется известная величина спреда (или один шаг цены при его отсутствии), как и в оригинальном советнике.
- Журнал содержит комментарий, тип ордера, цену (для отложенных заявок) и объём, что формирует понятный отчёт о ручных действиях.