オーダーブックと取引のルール
概要
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);
//-----------------------ルールを作成。方法 №1-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth) =>
{
LogInfo($"ルール WhenOrderBookReceived №1 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
}).Once().Apply(this);
//-----------------------ルールを作成。方法 №2-----------------------------------
var whenMarketDepthChanged = mdSub.WhenOrderBookReceived(this);
whenMarketDepthChanged.Do((depth) =>
{
LogInfo($"ルール WhenOrderBookReceived №2 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
}).Once().Apply(this);
//----------------------ルール内のルール-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth) =>
{
LogInfo($"ルール WhenOrderBookReceived №3 BestBid={depth.GetBestBid()}, BestAsk={depth.GetBestAsk()}");
//----------------------Once ルールではない-----------------------------------
mdSub.WhenOrderBookReceived(this).Do((depth1) =>
{
LogInfo($"ルール WhenOrderBookReceived №4 BestBid={depth1.GetBestBid()}, BestAsk={depth1.GetBestAsk()}");
}).Apply(this);
}).Once().Apply(this);
// マーケットデータをサブスクライブする要求を送信。
Subscribe(tickSub);
Subscribe(mdSub);
base.OnStarted2(time);
}
ロジック
方法 #1: ルールの作成
- オーダーブックを受信したときにトリガーされるルールを作成します
- 最良買気配と最良売気配をログへ記録します
- ルールは一度だけトリガーされます(
Once())
方法 #2: ルールの作成
- ルールを作成する別の方法を示します
- 機能的には方法 #1 と同じです
ルール内のルール
- オーダーブックを受信したときにトリガーされるルールを作成します
- このルール内で、別のルールを作成します
- 外側のルールは一度だけトリガーされ、内側のルールはオーダーブックを受信するたびにトリガーされます
機能
- StockSharp でルールを作成して適用するさまざまな方法を示します
- 取引とオーダーブックへのサブスクリプションを使用します
LogInfoメソッドを使用してストラテジー内で情報をログへ記録する例を示しますOnce()を使用してルールのトリガーを制限する方法を示します