Правила на стаканы и сделки
Обзор
SimpleRulesStrategy - это стратегия, демонстрирующая различные способы создания и применения правил в StockSharp. Она подписывается на сделки и стакан, а затем устанавливает различные правила для обработки получаемых данных.
Основные компоненты
// Основные компоненты
public class SimpleRulesStrategy : Strategy
{
}
Метод OnStarted
Вызывается при запуске стратегии:
- Создает подписки на сделки и стакан
- Демонстрирует различные способы создания и применения правил
// Метод OnStarted
protected override void OnStarted2(DateTime time)
{
var tickSub = new Subscription(DataType.Ticks, Security);
var mdSub = new Subscription(DataType.MarketDepth, Security);
//-----------------------Create a rule. Method №1-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth) =>
{
LogInfo($"The rule WhenOrderBookReceived №1 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
}).Once().Apply(this);
//-----------------------Create a rule. Method №2-----------------------------------
var whenMarketDepthChanged = mdSub.WhenOrderBookReceived(this);
whenMarketDepthChanged.Do((depth) =>
{
LogInfo($"The rule WhenOrderBookReceived №2 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
}).Once().Apply(this);
//----------------------Rule inside rule-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth) =>
{
LogInfo($"The rule WhenOrderBookReceived №3 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
//----------------------not a Once rule-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth1) =>
{
LogInfo($"The rule WhenOrderBookReceived №4 BestBid={depth1.GetBestBid()}, BestAsk={depth1.GetBestAsk()}");
}).Apply(this);
}).Once().Apply(this);
// Sending requests for subscribe to market data.
Subscribe(tickSub);
Subscribe(mdSub);
base.OnStarted2(time);
}
Логика работы
Метод №1: Создание правила
- Создает правило, которое срабатывает при получении стакана
- Логирует лучшие бид и аск
- Правило срабатывает только один раз (
Once())
Метод №2: Создание правила
- Демонстрирует альтернативный способ создания правила
- Функционально идентично методу №1
Правило внутри правила
- Создает правило, которое срабатывает при получении стакана
- Внутри этого правила создается еще одно правило
- Внешнее правило срабатывает один раз, внутреннее - каждый раз при получении стакана
Особенности
- Демонстрирует различные способы создания и применения правил в StockSharp
- Использует подписку на сделки и стакан
- Показывает пример логирования информации в стратегии через метод
LogInfo - Иллюстрирует использование
Once()для ограничения срабатывания правила