Alerting System Threshold Strategy — порт советника MetaTrader 5 «AlertingSystem» (каталог MQL 31843) на платформу StockSharp. В оригинале робот рисует две горизонтальные линии и воспроизводит звуковой сигнал, когда бид поднимается выше верхней линии или аск опускается ниже нижней. Конверсия на C# сохраняет ту же идею оповещений, но опирается на высокоуровневый API StockSharp и журналы стратегий.
Ключевая логика
Подписка на поток Level 1 (лучшие цены покупки и продажи).
Однократное срабатывание алерта при достижении бидом верхнего порога.
Однократное срабатывание алерта при падении аска ниже нижнего порога.
Автоматический сброс флагов, когда цены возвращаются внутрь диапазона.
В отличие от MQL-версии, которая проигрывала звук на каждом тике, реализация на StockSharp записывает одно информационное сообщение на событие. Это избавляет от засорения лога и при этом уведомляет трейдера о касании уровней.
Параметры
Параметр
Описание
Значение по умолчанию
UpperPrice
Уровень бида, при котором активируется верхний алерт. 0 отключает.
0
LowerPrice
Уровень аска, при котором активируется нижний алерт. 0 отключает.
0
Оба параметра созданы через StrategyParam<decimal>, поддерживают оптимизацию и изменение на лету. Во время работы можно двигать уровни так же, как перетаскиваются горизонтальные линии в MetaTrader.
Последовательность работы
При запуске стратегия вызывает SubscribeLevel1().Bind(ProcessLevel1).Start().
Сообщения Level1ChangeMessage обновляют кеш текущих bid/ask.
После каждого обновления проверяются условия алертов:
Верхний — срабатывает один раз при BestBid >= UpperPrice после возвращения ниже уровня.
Нижний — срабатывает один раз при BestAsk <= LowerPrice после возврата выше уровня.
Флаги сбрасываются автоматически, когда цена выходит из режима алерта.
Журналы и уведомления
Сообщения пишутся через AddInfoLog и содержат текущие цены и настроенный уровень. При необходимости можно подписаться на события логов стратегии и реализовать собственное оповещение — звук, e-mail, чат-бот.
Практические советы
Установите только нужный порог, второй оставьте 0, если он не требуется.
Для имитации звука подключите обработчик события Info и воспроизведите аудио в хост-приложении.
Стратегия не торгует и не открывает позиции, поэтому защита (StartProtection) не используется.
Отличия от оригинала
Вместо графических объектов используются данные Level 1.
Алерты выполняются по принципу «один раз за пробой», чтобы лог оставался читабельным.
Условия срабатывания, параметры и пороги полностью соответствуют MQL-сценарию.