简体中文
返回

如何避免重复开仓

当条件持续满足时,策略可能会重复执行下单事件。

如何实现每次信号只买或卖一次呢?下面介绍两种最简单的方法。

场景1:通过持仓判断

如果"下单卡片"使用的是可以快速成交的订单类型(例如:市价单),此时可以通过持有数量来间接判断开仓/平仓是否成功。

● 如果标的的持有数量 > 0,则证明已开仓成功,此时将直接走平仓条件路径;

● 如果该标的持有数量 = 0,则证明已平仓成功或未开仓,此时将走开仓条件路径。

注意:此方法要求订单必须快速成交,否则仍可能出现重复下单的情况。

场景2:通过计数器判断

如果“下单卡片”使用的是不一定快速成交的订单类型(例如:限价单),此时可以通过新建数值型全局变量作为计数器,来标记是否下过订单。

第一步:我们在开始——属性——全局变量处新建一个计数器”a“,用于标记是否下过买/卖单。

● 如果下过买单,且持仓不为0,则用1表示;

● 如果没有下过单,且持仓为0,则用0表示;

根据以上规则,”a“的初始值记为0(表示未下过单且持仓为0)。

第二步:我们需要在策略开始运行的时候,优先对“a”和持有数量进行判断:

● 如果“a” = 0,表示未下过单且没有持仓,此时直接走开仓条件路径;

● 如果“a” = 1,表示下过买单,此时直接走平仓条件路径;

第三步:在"下单卡片"后增加"赋值事件卡片",对”a"重新赋值:

● 平仓条件路径:将”a"重新赋值为 0,标记为下过卖单。

● 开仓条件路径:将”a"重新赋值为 1,标记为下过买单。