订单规则
概览
SimpleOrderRulesStrategy 是一种策略,它展示了在 StockSharp 中处理与订单相关的事件的规则的使用。它订阅交易并创建用于处理订单注册事件的规则。
主要组件
// 主要组件
public class SimpleOrderRulesStrategy : Strategy
{
}
OnStarted 方法
策略开始时调用:
- 创建对行情的订阅
- 为处理订单注册事件创建两套规则
// OnStarted 方法
protected override void OnStarted2(DateTime time)
{
var sub = new Subscription(DataType.Ticks, Security);
sub.WhenTickTradeReceived(this).Do(() =>
{
var order = CreateOrder(Sides.Buy, default, 1);
var ruleReg = order.WhenRegistered(this);
var ruleRegFailed = order.WhenRegisterFailed(this);
ruleReg
.Do(() => LogInfo("订单 №1 已注册"))
.Once()
.Apply(this)
.Exclusive(ruleRegFailed);
ruleRegFailed
.Do(() => LogInfo("Order №1 RegisterFailed"))
.Once()
.Apply(this)
.Exclusive(ruleReg);
RegisterOrder(order);
}).Once().Apply(this);
sub.WhenTickTradeReceived(this).Do(() =>
{
var order = CreateOrder(Sides.Buy, default, 10000000);
var ruleReg = order.WhenRegistered(this);
var ruleRegFailed = order.WhenRegisterFailed(this);
ruleReg
.Do(() => LogInfo("订单 №2 已注册"))
.Once()
.Apply(this)
.Exclusive(ruleRegFailed);
ruleRegFailed
.Do(() => LogInfo("Order №2 RegisterFailed"))
.Once()
.Apply(this)
.Exclusive(ruleReg);
RegisterOrder(order);
}).Once().Apply(this);
// 发送市场数据订阅请求。
Subscribe(sub);
base.OnStarted2(time);
}
逻辑
第一套规则
- 当收到一个行情更新时,创建一个购买1个单位的订单
- 该订单是使用
CreateOrder方法创建的,指定方向、价格(默认 = 市价)和数量 - 为处理成功注册和注册错误设定规则
- 这些规则是互斥的,并且只触发一次
第二套规则
- 当收到下一个报价时,创建一个购买10,000,000单位的订单
- 同样为处理成功注册和注册错误设定规则
- 这些规则也是互斥的,并且只触发一次
特征
- 演示创建用于处理订单注册事件的规则
- 使用互斥规则机制(
Exclusive) - 展示了使用
LogInfo方法记录关于订单事件的信息的示例 - 说明如何使用
Once()来限制规则触发 - 创建不同数量的订单以演示各种场景(成功注册和注册错误)