需求:
编写一个策略的过程中会先做历史回测,这时候需要用Buy/Sell这样的图表交易函数才能让TBQ3在回测过程中计算并统计交易数据。
回测通过后如果要转实盘交易时又要用A函数和OnOrder, OnFill, OnPosition等【账户事件】来处理实盘交易, 又要对原来回测的代码进行改动。
注意到放在同一个【策略单元】里包含OnSignal域的公式可以捕捉到同一个单元里其它公式产生的Buy/Sell信号,希望能利用这个机制将用于回测的代码与处理实盘交易的代码分离。理想情况举例:
实现两个公式:
- 【公式A-交易策略】: 包含实际的交易策略实现,通过Buy/Sell函数发出信号。
- 【公式B-实盘交易执行】: 没有交易策略,只是绑定要交易的实盘账户,通过OnSignal捕捉公式A里的信号并完成实盘交易操作。
使用过程:
- 回测时只加载【公式A-交易策略】,完成回测,如果要优化调整策略只需要改动公式A
- 回测通过后,实盘时只需要同时加载【公式A-交易策略】和【公式B-实盘交易执行】
问题:
1. 按照以上思路,如果想使用OnOrder, OnFill, OnPosition等域,是否需要用A_SubscribeTradeByCreateSource来订阅【公式A-交易策略】? (我理解的是不需要,因为真实的通过A函数发出的委托其实是在【公式B-实盘交易执行】中完成的,与公式A无关)
2. 上述思路是否可行,有没有潜在的问题需要注意?
3. 为了解决描述的需求,是否还有其它的思路?