Алгоритм котирования
Обзор
Алгоритм котирования — это механизм, который позволяет автоматически выставлять и обновлять заявки на рынке с целью достижения наилучшей цены исполнения. Вместо выставления агрессивных рыночных заявок, котирование использует лимитные заявки, что помогает минимизировать проскальзывание и снизить торговые издержки.
Основные компоненты
StockSharp предоставляет два ключевых компонента для котирования:
QuotingProcessor — основной процессор, который анализирует рыночные данные и состояние заявок, чтобы рекомендовать действия по котированию.
IQuotingBehavior — интерфейс, определяющий поведение котирования, включая расчет оптимальной цены и определение необходимости обновления заявок.
Примеры стратегий с котированием
В документации представлены примеры стратегий, которые демонстрируют использование механизма котирования:
- MqStrategy — пример стратегии, которая использует механизм котирования для управления позицией на рынке.
- MqSpreadStrategy — пример стратегии, создающей спред на рынке путем одновременного выставления котировок на покупку и продажу.
- StairsCountertrendStrategy — пример контртрендовой стратегии с использованием котирования для более точного входа в рынок.
Эти примеры помогают понять, как интегрировать механизм котирования в собственные торговые алгоритмы.
Поведения котирования
StockSharp поддерживает различные поведения котирования:
- MarketQuotingBehavior — котирование на основе рыночной цены с настраиваемым смещением и типом.
- BestByPriceQuotingBehavior — котирование на основе лучшей цены с настраиваемым смещением.
- LimitQuotingBehavior — котирование по фиксированной цене.
- BestByVolumeQuotingBehavior — котирование на основе лучшей цены по объему.
- LevelQuotingBehavior — котирование на основе указанного уровня в стакане.
- LastTradeQuotingBehavior — котирование на основе цены последней сделки.
- TheorPriceQuotingBehavior — котирование опционов на основе теоретической цены.
- VolatilityQuotingBehavior — котирование опционов на основе волатильности.
Использование в собственной стратегии
Шаг 1: Создание поведения котирования
// Создаем поведение для рыночного котирования
var behavior = new MarketQuotingBehavior(
new Unit(0.01m), // Смещение цены от лучшей котировки
new Unit(0.1m, UnitTypes.Percent), // Минимальное отклонение для обновления котировки
MarketPriceTypes.Following // Тип рыночной цены для котирования
);
Шаг 2: Создание и инициализация процессора
// Создаем процессор котирования
_quotingProcessor = new QuotingProcessor(
behavior,
Security, // Инструмент
Portfolio, // Портфель
Sides.Buy, // Направление котирования
Volume, // Объем котирования
Volume, // Максимальный объем заявки
TimeSpan.Zero, // Без таймаута
this, // Стратегия реализует ISubscriptionProvider
this, // Стратегия реализует IMarketRuleContainer
this, // Стратегия реализует ITransactionProvider
this, // Стратегия реализует ITimeProvider
this, // Стратегия реализует IMarketDataProvider
IsFormedAndOnlineAndAllowTrading, // Проверка разрешения торговли
true, // Использовать цены стакана
true // Использовать цену последней сделки, если стакан пуст
)
{
Parent = this
};
Шаг 3: Подписка на события процессора
// Подписываемся на события процессора для логирования и обработки
_quotingProcessor.OrderRegistered += order =>
this.AddInfoLog($"Order {order.TransactionId} registered at price {order.Price}");
_quotingProcessor.OrderFailed += fail =>
this.AddInfoLog($"Order failed: {fail.Error.Message}");
_quotingProcessor.OwnTrade += trade =>
this.AddInfoLog($"Trade executed: {trade.Trade.Volume} at {trade.Trade.Price}");
_quotingProcessor.Finished += isOk => {
this.AddInfoLog($"Quoting finished with success: {isOk}");
_quotingProcessor?.Dispose();
_quotingProcessor = null;
};
Шаг 4: Запуск процессора
// Запускаем процессор
_quotingProcessor.Start();
Шаг 5: Освобождение ресурсов
Не забудьте очистить ресурсы процессора при остановке стратегии:
protected override void OnStopped()
{
// Освобождаем ресурсы текущего процессора
_quotingProcessor?.Dispose();
_quotingProcessor = null;
base.OnStopped();
}
Преимущества использования
Снижение проскальзывания — котирование помогает получить лучшую цену исполнения по сравнению с рыночными заявками.
Гибкость настройки — различные поведения котирования для разных рыночных ситуаций.
Автоматическое обновление — процессор автоматически отслеживает изменения рынка и обновляет заявки при необходимости.
Полный контроль — возможность настройки параметров котирования, включая смещение цены, минимальное отклонение и тип рыночной цены.
Управление рисками — возможность установки таймаута для ограничения времени исполнения.
Прикладные сценарии использования
- Маркет-мейкинг — создание ликвидности на рынке путем выставления двусторонних котировок.
- Алгоритмическая торговля — улучшение цены исполнения в автоматизированных стратегиях.
- Контртрендовая торговля — более точный вход в рынок против тренда.
- Арбитраж — одновременное котирование на нескольких рынках для использования ценовых расхождений.
Внедрение механизма котирования в вашу стратегию может значительно улучшить исполнение заявок и повысить её эффективность.