自动化交易设计

 

 
AlgoTrader | 量化交易程序设计

 

自动化交易的过程就是交易程序与交易所系统交互的过程:接收交易所发布的实时行情,并向交易所发出报撤单请求,同时接收订单实时状态。


组织证券交易

《证券交易所管理办法》第七条明确规定了交易所的职能,其中包括“组织和监督证券交易”。

组织证券交易是由交易系统完成。我们使用交易程序报出的买入卖出订单进入交易系统后,遵循价格优先、时间优先的原则排队成交。

把交易系统比作一台运行的计算机,把我们使用的交易程序比作外部设备,例如优盘,交易程序可能随时接入,也可能随时退出,就像优盘的热拔插。

交易程序接入交易系统后,就可以与交易系统进行交互。交互是双向的,既可以向交易系统发出报撤单请求,也可以接收到交易系统的通知。

我们的交易程序使用交易接口(TraderApi)接入交易系统。


实时公布即时行情

《证券交易所管理办法》第三十八条规定“交易所应当实时公布即时行情”。

虽说行情的源头是交易系统中的最新成交情况,但是行情发布系统与交易系统是独立的。在大部分的交易软件上,无需登录交易账户就可以查看实时行情。

相较于交易系统,行情系统的业务比较单一,只负责发布实时行情。

我们的交易程序使用行情接口(MdApi)接入行情系统。


异步与同步

本地端与服务端进行交互时,一个请求从本地发出,需要经过网络传输,服务端处理,服务端回复,网络传输,最后本地才能接收到结果信息。

同步模式下,程序发出请求后,需要等待服务端回复,期间不能继续运行。异步模式下,程序在发出请求后继续运行,通过回调函数获得结果信息。

不管交易接口(TraderApi)还是行情接口(MdApi)都是采用异步模式工作的。

如果这个概念不容易理解,我们可以做一个类比:

同步模式就像打电话,我问你一句,会等待你的回答,等待期间不能做其他事情。

异步模式就像寄信,我把信件从邮局寄出,接着就可以去做其他事情了,你回信之后,邮递员会通知到我,然后我再考虑如何处理收到的信息。

如果寄信采用同步模式会发生什么?我把信件从邮局寄出,然后就必须等待在那里,不能做其他任何事情,直到收到回信。

异步模式涉及到一个概念:回调。其实也很简单,回调就是邮递员的角色,当收到回复时,回调函数会自动执行,附带结果信息,我们只需要在回调函数中定义相关的处理逻辑就可以了。


量化交易基础架构

所以,一个量化交易程序至少由行情模块、策略模块交易模块构成。

行情模块接收实时行情,输入到策略模块中,经过数据处理、逻辑判断,输出交易信号,然后调用交易模块发出报撤单的请求,交易模块通过异步模式通知订单实时状态。

我们在接收到订单状态的通知时进行判断:如果未成交是否需要撤单重报,如果成交则更新账户持仓数量、策略持仓数量,等。

行情数据源源不断,以上过程循环往复。


智能化与系统化

然而,量化交易是一项系统化的工程。可能涉及多市场、多品种、多账户、多业务。

一个更完善的设计,就需要考虑多行情源多账户风险控制执行算法等模块。

当然,具体设计要视实际需求而定。

 

posted @   shclbear  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示