首页 > 其他分享 >自动化交易设计

自动化交易设计

时间:2023-03-23 23:22:35浏览次数:40  
标签:异步 行情 交易系统 实时 模块 自动化 设计 交易

 

    AlgoTrader | 量化交易程序设计

 

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


组织证券交易

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

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

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

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

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


实时公布即时行情

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

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

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

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


异步与同步

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

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

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

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

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

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

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

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


量化交易基础架构

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

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

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

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


智能化与系统化

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

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

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

 

标签:异步,行情,交易系统,实时,模块,自动化,设计,交易
From: https://www.cnblogs.com/shclbear/p/17249899.html

相关文章

  • [设计模式]外观模式(Facade)
    外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该......
  • [设计模式]代理模式
    代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处......
  • [设计模式]桥接模式(Bridge) DriverManager
    将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,......
  • 基于Matlab模拟钢琴键的设计与仿真
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Cadence IC617 设计环境安装
    https://pan.baidu.com/s/1O3a_c9DcCuY_sh26ySkciAz8wq运行库配置yumupdatekernel–yyuminstallkernel-headers–yyuminstallkernel-devel–yyuminstallg......
  • 如何使用RunnerGo做自动化测试
    RunnerGo支持自动化测试功能,RunnerGo的工作流程是:接口管理-场景管理-性能测试-自动化测试,所以自动化测试的运行内容为场景下的用例,我们可以在“场景管理”中预先配置好该......
  • 火山引擎 DataTester:抖音的设计团队是如何用 A/B 测试实现高效优化的?
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 对C端产品而言,产品的每一个细节设置都或多或少影响着用户的产品体验,本文介绍字......
  • 智能建筑电力监控自动化的实践应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801引言    所谓智能建筑就是采用计算机技术和通讯技术对建筑的设备进行自动监控,对信息资源进行管理和为用户提供信息服......
  • ChatGPT火出圈,80%的设计师无事可做
    自从疫情过后,设计行业开始变得很凌乱。很多同行开始打价格战,设计岗位逐渐演变成了一种新型的流水线。在我国,不管什么行业,到最终都会演变成饱和状态。用金融理论来说:供不应求......
  • Bootstrap 3 : 实现5栏设计 5 columns layout with Twitter Bootstrap
      BydefaultBootstrap doesnotprovidegridsystemthatallowsustocreatefivecolumnslayout,butasyoucanseeit’squitesimple.Atfirstyouneedto......