当条件持续满足时,策略可能会重复执行下单事件。
如何实现每次信号只买或卖一次呢?下面介绍两种最简单的方法。
场景1:通过持仓判断
如果"下单卡片"使用的是可以快速成交的订单类型(例如:市价单),此时可以通过持有数量来间接判断开仓/平仓是否成功。
● 如果标的的持有数量 > 0,则证明已开仓成功,此时将直接走平仓条件路径;
● 如果该标的持有数量 = 0,则证明已平仓成功或未开仓,此时将走开仓条件路径。
注意:此方法要求订单必须快速成交,否则仍可能出现重复下单的情况。
场景2:通过计数器判断
如果“下单卡片”使用的是不一定快速成交的订单类型(例如:限价单),此时可以通过新建数值型全局变量作为计数器,来标记是否下过订单。
第一步:我们在开始——属性——全局变量处新建一个计数器”a“,用于标记是否下过买/卖单。
● 如果下过买单,且持仓不为0,则用1表示;
● 如果没有下过单,且持仓为0,则用0表示;
根据以上规则,”a“的初始值记为0(表示未下过单且持仓为0)。
第二步:我们需要在策略开始运行的时候,优先对“a”和持有数量进行判断:
● 如果“a” = 0,表示未下过单且没有持仓,此时直接走开仓条件路径;
● 如果“a” = 1,表示下过买单,此时直接走平仓条件路径;
第三步:在"下单卡片"后增加"赋值事件卡片",对”a"重新赋值:
● 平仓条件路径:将”a"重新赋值为 0,标记为下过卖单。
● 开仓条件路径:将”a"重新赋值为 1,标记为下过买单。