关于OnBar触发机制可能存在的问题的确认

简单高频示例:

1. 成交开仓的单子3手

2. onorder里面的代码条件是 If(ord.status == Enum_Filled && ord.combOffset == Enum_Entry),只取成交+开仓

3. counts理论上等于3,实际上打印出来counts = 7,请问是不是哪里的机制出了问题?


附:订单示意图 + 源码


主要代码逻辑:

//委托更新事件函数,参数ord表示更新的委托结构体

OnOrder(OrderRef ord)

{

              // Map存储 开仓成交的订单

   If(ord.status == Enum_Filled && ord.combOffset == Enum_Entry)

   {

       filled_map[ord.orderId] = ord;  

       counts = counts + 1; // counts计数异常

   }

}

关于 FOR,WHILE,IF,ELSE中包含序列函数,可能存在潜在的逻辑错误。请确认代码无误的问题
关于onbar的问题
收盘后触发onbar的问题
历史回测 onBar 触发机制
关于OnOrder域机制的问题
onbar,onbarOpen,onbarClose的运行机制
关于onbar的问题
提示可能存在潜在的逻辑问题
关于历史回溯onbar执行次数的问题
if,else中包含序列函数,可能存在潜在的逻辑错误

onorder 里面有些柜台可能推送多次

成交在onfill里确认比较好

主要代码逻辑:

//委托更新事件函数,参数ord表示更新的委托结构体

OnOrder(OrderRef ord)

{

               // Map存储 开仓成交的订单

If(ord.status == Enum_Filled && ord.combOffset == Enum_Entry)

{

filled_map[ord.orderId] = ord;  

counts = counts + 1; // counts计数异常

}

       }

修正:

2. onbar里面的代码条件是 If(ord.status == Enum_Filled && ord.combOffset == Enum_Entry)
--->>>

2. onorder里面的代码条件是 If(ord.status == Enum_Filled && ord.combOffset == Enum_Entry)