明天(2020 年 7 月 28 日)WonderTrader 公布了最新版本 v0.5.0,同步公布的还有 wtpy 的最新版本 v0.5.0
WonderTrader 在 v0.5.0 中做了如下批改:
-
高频策略引擎正式公布 。高频策略引擎之前在
WonderTrader
中曾经做了实现,然而因为测试不够充沛,临时并没有正式公布,只是以 CTA 策略组合为主,随着 v0.4.0 公布的选股引擎,v0.5.0 也正式公布了高频引擎,从而实现了WonderTrader
对不同策略利用场景的全笼罩。-
CTA 引擎 ,实用于多策略组合。CTA 引擎采纳 同步事件驱动 模式,这样就要求策略计算工夫不能太长。对于期货来说,依照 500ms 一笔快照的速度,个别 Python 中 CTA 策略在主 K 线闭合时触发重算,单次计算工夫为个别在 10 个毫秒以内,也就是说同一个策略组合中,在两个 tick 距离的工夫内,除去引擎自身的工夫开销来说,能 反对 40 个以上的策略同时运行 。而一般来说全副国内期货的主力合约,也就是这个数目。CTA 引擎同步调度的目标是要 整合策略组合的指标仓位为净头寸 ,而后发送给执行模块提交指令,从而 从根本上杜绝自成交 等问题,而且节俭佣金和保证金,进步资金的利用效率。(回测引擎能够测算出每个策略大略每次计算的均匀耗时,以 Demo 中的
DualThrust
为例,个别状况下耗时 4 - 6 个毫秒)CTA 引擎同时提供 tick 级响应接口,次要针对策略自身的风控需要。 - SEL 引擎 ,实用于选股零碎或者简单算法策略。SEL 引擎采纳 异步工夫驱动 模式,只有在两次重算调度之间,策略运算实现即可。SEL 引擎因为是异步的起因,所以信号无奈整合到同一时间收回(强行整合到同一时间执行可能会导致交易机会的失落,从而造成策略意料之外的危险)。SEL 引擎的劣势是:反对 日级别以上的任务调度 (次要针对选股的需要,个别选股策略轮换工夫都比拟长),同时也 反对分钟线级别的任务调度(次要针对预设股池的盘中筛选),日线级别的任务调度不限定工夫,是否交易工夫都能够执行,分钟线级别的任务调度限定在交易工夫内。比拟典型的用法就是盘后日线级别选股失去根本股池,而后在盘中针对该根本股池设置分钟线级别的选股。
-
HFT 引擎 ,实用于高频策略。HFT 引擎也采纳 同步事件驱动 模式。HFT 引擎和 CTA 引擎不同的点在于,CTA 引擎要外接执行模块,而 HFT 引擎的策略自带执行。简略来说,就是HFT 引擎容许策略间接操作交易接口。HFT 引擎对策略要求较高,须要策略自行治理订单,解决超时撤销等操作。然而 HFT 引擎还是向策略提供了一系列不便的接口,例如:HFT 引擎对策略只提供买入、卖出和撤单三种下单指令,策略逻辑中,不须要刻意去关怀是买入开仓还是买入平仓,这些都会在交易接口中主动解决掉(交易接口读取开平策略配置文件
actionpolicy.json
,通过配置文件中,针对不同的种类配置开仓、平仓、平今的优先级和边界参数)。
-
CTA 引擎 ,实用于多策略组合。CTA 引擎采纳 同步事件驱动 模式,这样就要求策略计算工夫不能太长。对于期货来说,依照 500ms 一笔快照的速度,个别 Python 中 CTA 策略在主 K 线闭合时触发重算,单次计算工夫为个别在 10 个毫秒以内,也就是说同一个策略组合中,在两个 tick 距离的工夫内,除去引擎自身的工夫开销来说,能 反对 40 个以上的策略同时运行 。而一般来说全副国内期货的主力合约,也就是这个数目。CTA 引擎同步调度的目标是要 整合策略组合的指标仓位为净头寸 ,而后发送给执行模块提交指令,从而 从根本上杜绝自成交 等问题,而且节俭佣金和保证金,进步资金的利用效率。(回测引擎能够测算出每个策略大略每次计算的均匀耗时,以 Demo 中的
- 减少股票数据复权因子解决逻辑。在应用
WonderTrader
进行股票回测或者交易的时候,WonderTrader
会主动读取未复权的数据,以及复权因子,而后进行前复权解决。 - 交易模块减少交易数据落地。次要实时落地的数据包含:成交明细、订单明细、持仓数据和资金数据。
- 其余代码细节调整
wtpy 在 v0.5.0 中做了如下批改:
- 同步底层为最新版本 v0.5.0
- 因为高频策略开发的须要,从新调整了 C ++ 底层的目录构造(次要是行情接入接口,之前是数据组件独自应用,当初 HFT 策略也可能间接应用)
- 新增了高频策略对应的
HftContext
模块,以及BaseHftStrategy
模块。
下一阶段的打算
到目前为止,WonderTrader
根本曾经做到了利用场景全笼罩,所以当前的开发计划,将会从大性能实现为主,变成
- wtpy 会内置一个基于 flask 的伺服引擎,次要用于近程监控
- wtpy 会内置一套 web-ui,作为 flask 伺服的资源,供用户近程查看
- 优化底层接口细节,更不便 python 等应用层调用
- 测试欠缺底层外围模块