Котирование
Алгоритм котирования позволяет контролировать позицию выставленных заявок в стакане. Необходимость в такой функциональности возникает тогда, когда необходимо быстро открывать и закрывать позиции по выгодным ценам. Также, благодаря быстрому мониторингу стакана, котирование позволяет реализовывать скальперские приводы на сверх малых тайм-фреймах.
Также, котирование позволяет эмулировать рыночные заявки на бирже ФОРТС, где тип заявок OrderTypes.Market не поддерживается.
Предварительные условия
Для реализации котирования в S# входит класс QuotingStrategy. Это базовый абстрактный класс для всех производных алгоритмов:
- MarketQuotingStrategy – данный алгоритм мониторит лучшую котировку (Security.BestBid для покупки или Security.BestAsk для продажи), выставляя свои заявки по этим же ценам, или чуть лучше, в зависимости от значения MarketQuotingStrategy.PriceOffset. Дополнительно, в MarketQuotingStrategy входит параметр MarketQuotingStrategy.PriceType, который контролирует положение передвижения заявки в спреде: MarketPriceTypes.Following – алгоритм смотрит лучшую котировку, MarketPriceTypes.Opposite – лучшую противоположную котировку и MarketPriceTypes.Middle – алгоритм будет ставить заявку в середину спреда. Данный параметр влияет на то, как скоро будет удовлетворена заявка.
- BestByVolumeQuotingStrategy – смотрит, какой объем стоит перед котируемой заявкой, и если он превышает допустимую норму BestByVolumeQuotingStrategy.VolumeExchange, то заявка передвигается на край спреда.
- BestByPriceQuotingStrategy – смотрит, насколько далеко котируемая заявка ушла от лучшей котировки. Если был превышен допустимый интервал BestByPriceQuotingStrategy.BestPriceOffset, то заявка передвигается на край спреда.
- LastTradeQuotingStrategy – аналогичен MarketQuotingStrategy за исключением того, что мониторится не стакан, а последняя сделка Security.LastTrade.
- LevelQuotingStrategy – котирование по заданному уровню в стакане.
- LimitQuotingStrategy – котирование по лимитированной цене.
Добавление в SampleSMA котирование
Для того, чтобы алгоритм скользящей средней, описанный в разделе Итерационная модель, стал работать совместно с котировщиком, перед началом работы необходимо запустить экспорт стакана:
if (!_isLkohOrderBookStarted) { // для алгоритма котирования необходимо включить экспорт стакана _connector.SubscribeMarketDepth(lkoh); _isLkohOrderBookStarted = true; }
Необходимо заменить код в классе SmaStrategy c:
// регистрируем ее base.RegisterOrder(order);
на:
var strategy = new MarketQuotingStrategy(direction, volume); ChildStrategies.Add(strategy);