Стратегия On Tick Market Watch
Обзор
On Tick Market Watch Strategy переносит логику скрипта MetaTrader scOnTickMarketWatch.mq5. Оригинальный скрипт непрерывно перебирает список Market Watch и при появлении нового тика отправляет пользовательское событие, печатая текущий бид и спред. В версии для StockSharp эта функциональность реализована как высокоуровневая стратегия, которая подписывается на данные Level1 и выводит информацию о тикax через логгер стратегии.
Стратегия не выполняет торговых операций и предназначена для диагностики/мониторинга входящего потока котировок по нескольким инструментам одного соединения. Event-driven модель StockSharp избавляет от необходимости вручную организовывать цикл и задержки, как в MQL.
Ключевые возможности
- Отслеживание основного инструмента стратегии и дополнительных инструментов, перечисленных через запятую.
- Подписка на Level1 по каждому инструменту для получения обновлений бид/аск.
- Расчёт спреда (ask − bid), если обе цены доступны, и подробный вывод данных в лог.
- Сохранение индекса инструмента в соответствии с порядком, указанным пользователем, что имитирует Market Watch.
- Предупреждения, если указанный тикер отсутствует в текущем
SecurityProvider.
Параметры
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
SymbolsList |
string |
"" |
Список дополнительных инструментов через запятую (например, AAPL@NASDAQ,MSFT@NASDAQ). Инструменты добавляются после основного Strategy.Security и должны существовать в SecurityProvider. |
Принцип работы
- В
OnStartedстратегия формирует список наблюдаемых инструментов: первым идётStrategy.Security, затем тикеры изSymbolsList. - Для каждого инструмента вызывается
SubscribeLevel1, и привязывается обработчикLevel1ChangeMessage. - Обработчик проверяет, содержит ли сообщение значения
LastTradePrice,BestBidPriceилиBestAskPrice. - Бид берётся из
BestBidPrice(либоLastTradePrice, если бид отсутствует), аск — изBestAskPrice. Если обе цены присутствуют, вычисляется спред. - В лог записывается строка формата
New tick on the symbol <id> index in the list=<index> bid=<bid> spread=<spread>. При отсутствии аска спред выводится какn/a. - Если
SecurityProviderне смог найти инструмент, генерируется предупреждение и инструмент пропускается.
Порядок использования
- Задайте основной инструмент (
Strategy.Security) через интерфейс или код. - При необходимости добавьте дополнительные тикеры в параметр
SymbolsList, разделяя их запятыми. Их порядок определяет индекс в сообщениях лога. - Убедитесь, что подключение предоставляет Level1 для выбранных инструментов.
- Запустите стратегию — подписки активируются сразу, и в логе появятся сообщения о тиках.
- Используйте лог для контроля входящих данных и рассчитанных спредов.
Отличия от MQL-версии
- Реализация полностью событийная: нет цикла и задержки
Sleep. - Аналог
SymbolsTotal(true)достигается сохранением порядка добавления инструментов, индексация начинается с 0. - В MetaTrader спред выражен в пунктах, а здесь — в ценовых единицах (decimal).
- Вместо пользовательских событий используются стандартные лог-сообщения StockSharp.
- При отсутствии аска выводится
n/a, что подчёркивает неполноту текущего Level1. - Стратегия предназначена только для мониторинга и не отправляет заявок.
Пример лога
New tick on the symbol AAPL@NASDAQ index in the list=0 bid=171.25 spread=0.02
New tick on the symbol MSFT@NASDAQ index in the list=1 bid=324.10 spread=n/a
Пример показывает формат сообщений, которые стратегия пишет для каждого инструмента из списка Market Watch.