当信号持续满足时,策略可能会重复执行下单事件。
如何实现每次信号只买 或 卖一次呢?下面介绍两种最简单的方法。
如果下单控件使用的是可以快速成交的订单类型(例如:市价单),此时可以通过持有数量来间接判断开仓/平仓是否成功。
● 如果标的的持有数量 > 0,则证明已开仓成功,此时将直接走平仓条件路径;
● 如果该标的持有数量 = 0,则证明已平仓成功或未开仓,此时将走开仓条件路径。
注意:此方法要求订单必须快速成交,否则仍可能出现重复下单的情况。
如果下单控件使用的是不一定快速成交的订单类型(例如:限价单),此时可以通过新建数值型全局变量作为计数器,来标记是否下过订单。
第一步:我们在开始——属性——全局变量 处新建一个计数器「a」,用于标记是否下过买/卖单。
● 如果下过买单,则用 1 表示;
● 如果没有下过单,则用 0 表示;
● 如果下过卖单,则用 -1表示。
根据以上规则,「a」的初始值记为 0(表示未下过单)。
第三步:在下单控件后增加赋值事件,对「a」重新赋值:
● 平仓条件路径:将「a」重新赋值为 -1,标记为下过卖单。
● 开仓条件路径:将「a」重新赋值为 1,标记为下过买单。
这里介绍两种下单场景:固定手数下单 和 现金比例购买。
如果您需要交易固定数量的标的,只需要在下单事件的「数量」参数中选择「股数」,并输入数值即可。
如果您需要按照账户的仓位比例进行交易(例如:现金可买的100%),只需要在下单事件的「数量」参数中选择「现金可买」,并输入百分比即可。
不同用户对于信号触发买卖的时机有个性化的需求,下面介绍两种监控信号的方式:实时 Tick 触发 和 K线收线触发。
如果您希望每个逐笔成交都进行信号监控,只需要在实盘/回测的参数设置中,选择「每 Tick 运行一次」。
如果您希望仅在 K 线收线后,进行信号监控,只需要在实盘/回测的参数设置中,选择对应周期的 K 线触发运行。