概述
我想让我的交易系统既可以做回测,又可以做快速地实盘交易;还可以很方便的扩展指标或者信号;我可以定义自己的交易执行策略;还可以同时处理多个合约、多个策略、多个账户。量化交易本来就要求同时交易多个合约为好,甚至可以考虑用合约1的信号做合约2;可以同时做多个策略,资金使用率提高,风险分散;还可以多个帐户,有很多客观地需求。
同时支持回测和实盘,我设置两个接口来实现,一个接口读行情,一个接口做交易。读行情接口有两个派生,一个是从文件里面读数据,一个是从实盘行情服务器读数据。交易接口也有两个派生,一个是下单通过网络报出去,一个是下单下到文件里。这样回测、纸面交易和实盘交易的实现就是搭不同的积木。回测是把历史数据灌进来,下单到文件,最后统计一下回测结果好不好。真实的交易无非是听真实的行情,把单子报到网络中去。纸面交易则是听取真实的行情,下单下到文件中去。
为了很方便地扩展指标和信号,可以设定一个指标计算的接口作为父类。具体的指标或者信号由接口派生出来,行情其实也可以作为一种特殊的指标或者信号。还做了指标计算和交易策略的分离,比如说同时管理多个帐号,多个帐号可以用同样的策略,做了分离之后指标/信号计算就可以只算一次。这样的分离也避免了策略业务逻辑的复杂化。
我们还要做交易策略和执行策略的分离,执行策略是描述我的单子怎么去执行的。例如我的单子特别大的时候,需要配合一些算法,把单子拆分成细的、小的单子;如果你一次把一个大单子放进去,别人就会看到了你的需求,他就会想怎么赚你的钱,这样不好。把单子拆小,让自己的冲击成本减少;而对于高频交易虽然不大需要单子的拆分,但是也要处理很多复杂的东西,比如说订单的成交细节和撤单细节等。
这是一个可行的架构,这个架构是真实交易的架构,分为几个线程。真实交易肯定是多线程的网络程序,有行情线程、订单回报线程,还有数据处理的线程。行情线程收到行情后,把时间信息放到队列里面去,把行情信息放到内存里面,然后通知中间的数据处理现场说:“新的行情来了,数据准备好了,你开始处理吧!”然后中间的线程就去看,哪些指标/信号计算、哪些交易策略关联到这个合约的行情,挨个调用挨个计算,在交易策略中可能会涉及到报单,就把单子报出去。报出去以后,要等交易回报线程通知。可能会通知你的单子报错了;可能会通知你单子成交多少手等等。通知存到共享内存中,订单回报现场再知会信息处理线程:“单子成交了,你处理吧。”这中间可以建很多的数据处理线程,达到并行的目的。
最后
以上就是阔达煎饼为你收集整理的股票量化实盘交易接口如何做回测?的全部内容,希望文章能够帮你解决股票量化实盘交易接口如何做回测?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复