量化投资者是如何获取实时行情数据的呢

2024-05-16

1. 量化投资者是如何获取实时行情数据的呢

基本都是自己封装CTP接口,程序端实现多账户、多策略的行情信号接收和委托提交/回报处理。也可以用 QuantBox/QuantBox_XAPI · GitHub 这样的封装的比较好、多接口统一API的项目直接整合到程序化平台的项目中使用。

通过程序接口用证券、期货账号登录后订阅品种的行情,证券、商品期货、股指期货、期权(全真模拟,9号就有实盘行情)都可以接收交易所的快照数据(例如商
品、股指都是500ms一个快照,数据结构也比较完整)。然后交易平台可以把行情数据广播给各个策略程序,程序根据量化策略的逻辑判断是否下单?挂单的方
式如何?挂单失败是否追单?如何追单?

策略程序判断要下单,则提交指令到程序化交易平台,平台把各个帐号各个品种中策略的逻辑持仓汇总为实际持仓,然后通过接口提交委托,并且处理委托回报。

行情数据一方面广播给策略程序,一方面自己存数据库,存下来的数据通过完整性检测后,可以自己合成低频率的数据,如
1分钟、30分钟、1小时、日度等等,这些数据会被用于策略回测,也可以用于市场微观结构的观察和研究,例如可以通过优化挂单方式来降低交易滑点。
目前量化投资做的比较好的是微量网www.wquant.com

量化投资者是如何获取实时行情数据的呢

2. 如何用quantbox.csharp2ctp开发

基本都是自己封装CTP接口,程序端实现多账户、多策略的行情信号接收和委托提交/回报处理。也可以用 QuantBox/QuantBox_XAPI · GitHub 这样的封装的比较好、多接口统一API的项目直接整合到程序化平台的项目中使用。

3. 量化投资者是如何获取实时行情数据的呢

基本都是自己封装CTP接口,程序端实现多账户、多策略的行情信号接收和委托提交/回报处理。也可以用 QuantBox/QuantBox_XAPI · GitHub 这样的封装的比较好、多接口统一API的项目直接整合到程序化平台的项目中使用。

通过程序接口用证券、期货账号登录后订阅品种的行情,证券、商品期货、股指期货、期权(全真模拟,9号就有实盘行情)都可以接收交易所的快照数据(例如商品、股指都是500ms一个快照,数据结构也比较完整)。然后交易平台可以把行情数据广播给各个策略程序,程序根据量化策略的逻辑判断是否下单?挂单的方式如何?挂单失败是否追单?如何追单?

策略程序判断要下单,则提交指令到程序化交易平台,平台把各个帐号各个品种中策略的逻辑持仓汇总为实际持仓,然后通过接口提交委托,并且处理委托回报。

行情数据一方面广播给策略程序,一方面自己存数据库,存下来的数据通过完整性检测后,可以自己合成低频率的数据,如 1分钟、30分钟、1小时、日度等等,这些数据会被用于策略回测,也可以用于市场微观结构的观察和研究,例如可以通过优化挂单方式来降低交易滑点。

Matlab可以做一些回测,实盘可能是比较不易用的。一般可以用C++, Java, C#来利用CTP程序化交易接口实现实盘平台,策略研究推荐用R做数据分析、统计、处理、可视化、策略分析、自动报告,用Rcpp(R调用C++)或者直接C++实现高性能回测,用单机并行或集群实现批量回测。

量化投资者是如何获取实时行情数据的呢

4. Quant 应该学习哪些 Python 知识

可以这样来关注Python:


Python是一门什么编程语言,它的显著优势和劣势分别是什么
Python编程环境的快速搭建(包括包管理(现在pip正在被标准化),编辑器,以及调试工具)
Python最被广泛认同的编码规范和最佳实践是什么 (e.g., ('a' + 'b') VS. ''.join(['a', 'b'], 这一点被很多初学者所忽略(“为什么不呢?反正我的代码运行正确了。”),但是如果学习者最初花多一点时间来回答这个问题(“虽然有多种选择,但是哪种选择在这个时候最合适”),或者说建立起来这样一种思考方式,你将很快的超越自己,成为别人眼中的专家。)
Python内建的主要的数据类型(int, long, str, tuple, list, dict, heapq, deque - 内建的标准库中并不包含像C++里面那样丰富的数据结构,Search Tree, Binary Search Tree, AVL/Splay/Red Black Tree, Graph等, 不过这些非线性的数据结构都可以在PyPI中找到),以及它们的常用API(这也正是Python的闪光点之一,即最初的编程效率的来源)。
Python的常用标准库(Python拥有非常易用和功能完备的标准库,使得Python在安装之后就能应付大量问题,如字符处理,文件系统,HTTP, 常见数据文件处理等。语言的维护者早期应该是希望赋予Python以明朗的模块组织结构,对于某类具体问题都存在一个明确的甚至是唯一的模块,但是随着这些年Python的流行,第三方包的大量增加,这种初衷现在面临不少挑战。直观的结果是,在Python 2.X的版本里,你会找到像urllib2这样命名的模块。现在的Python 3所作出的众多努力中就包括对这些模块组织上的歧义进行整理。总的来说,用户仍然还是可以迅速的回答“我该使用哪个模块”这个通常需要不少经验的问题。)
Python的面向对象范式怎么使用(如何在此理解上可靠的实现封装,重用,继承,覆盖)
Python在处理网络编程上的常见方案,常用标准包及第三方包(这本身是一个丰富的话题,同时也几乎不可避免,熟练掌握这个话题需要多年的经验,深层次的理解更需要系统的计算机科学知识,但是你可以从其中某一个具体的方案开始。Python内建标准包提供几乎所有层次的网络编程术语,你可以工作在从IP到应用的所有层面。)
Python在处理CPU密集型运算时候采用的流行解决方案,以及它们的工作原理大致是什么(这个理解可以帮助你以不变应万变的从众多第三方方案中选择合适的候选者。流行的方案一般是通过Python  C/C++/Fortran互操作,可能会使用一些元编程语言(比如Cython)来进行language translation/generation,也有可能直接从C/C++/Fortran编写的软件中来生成二进制编程界面或者应用编程界面(取决于生成的过程是利用二进制文件(.lib, .so)还是源文件),甚至更新的尝试会利用到一个多阶段的源代码处理管道,从Python源代码,中间C/C++代码,再到LLVM将Python代码(目前比较成功的方案似乎支持到Python的一个理想子集)实时生成对应的机器码。理解这一原理将帮助你克服Python在CPU密集运算时所遇到的瓶颈,同时我认为如果你将为你所在的部门构建一个基于Python的数据分析平台(几个华尔街的投行有在做这件事情),理解这个是至关重要的。)

5. 为什么自动交易程序要自己编

后来新出的一些算法语言虽然各有自己的语法,但是如何把人脑的逻辑转化成电脑的机器逻辑,基本思路和方法都是十分相似的。这里碰到的一个问题是钻研精神。我看到海内外交易论坛中有些朋友把很多软件都玩了个遍,有的还很深入,可最后仍然没有找到适合自己的平台,这十分可惜。交易员的时间是宝贵的,熟悉和学习各种交易平台不是我们的工作,利用它们来盈利才是。有些专业搞计算机的朋友水平极高,已经到了自己编写交易平台的境界。高山仰止,不过非职业IT人士也不必灰心气馁,编程能力和盈利能力之间,本没有明确的函数关系,另外是否需要 reinvent the wheel, 这也是一件值得商榷的事情。幸运的是在全球化背景下,海外交易软件行业为我们提供了极大的选择空间。我一直赞同这样一个看法: 我们日常所做工作的百分之九十五,在任何一个成熟的海外交易软件平台上都能完成。应付诸如浏览行情,测试研发,乃至自动交易这些事,TRADESTAION, MULTICHART, NINJATRADER, AMIBROKER, OPENQUANT, RIGHTEDGE, 这其中任何一个软件都绰绰有余。看着顺眼的就是适合的,适合的就是最好的。铆牢一个钻研下去,假以时日成功的机会大。当然,无论你选择什么平台,下载安装了该平台以后还是需要编写一些公式来把你的交易策略上载到平台之中进行测试。测试成功以后要进行策略部署,这里是自动交易系统的基建部分(ATS infrastructure ),根据不同平台,可能需要更复杂的编程。
为什么ATS最好自己编呢?我想可能有三个原因。首先是使用习惯的问题。如果东西是自己写的,那么肯定可以最大限度地符合自己的操作习惯。大到下单种类/下单数量/scaling 方法/hosted server的设定 ,小到界面上一个按钮放置的位置,都可以调试到让自己满意为止。第二个原因是ATS平台的打造,和任何其他软件产品一样,不是一件一劳永逸的事情,需要经常更新和升级。(这里ATS 中的system(系统),指行使下单改单撤单职能的自动交易部分,不是指交易策略的更新和升级)。交易品种,交易规模,账户数目,甚至API接口端程序升级带来的种种细微变化都可能随时引出新的问题,对ATS 的 infrastructure 提出新的要求,所以后续的维护很重要,如果不是自己编写,发生问题时很可能会发生束手无策的情况,相当麻烦。最后一个原因是心理方面的。想想看,把你的机器灌输给一台没有生命的机器,让它 do the dirty job for you—— 日复一日地严格按照你的思维去重复繁杂无趣的盯盘下单工作,这是件多么有趣的事情。如果能产生盈利的话,毫无疑问这就是交易的最高境界。这里如果ATS 不是你自己编程的,那么乐趣会少很多。当然对交易而言,物质上的获得是第一位的,精神上的追求要稍后才会发生。在刚踏入这个行业的时候,只要能保证盈利,哪怕是blackbox系统我也会毫不犹豫地接受。

为什么自动交易程序要自己编

6. ricequant 需要先会python吗

不一定
ricequant支持两个API
一种是python的
另一种是java的,所以使用java也可以开发