有许多朋友想学习量化交易,但是不知道如何入门。就这个问题,我从以下几个方面谈一下自己的经验。
# 市场
期货市场的量化交易环境相对而言更成熟。
一方面,因为起步比较早,基本完成了市场教育、配套设施构建。另一方面,监管环境相对比较宽松,可以轻松地申请到量化交易资格。
从期货市场开始学习量化交易,快速了解其中的业务环节,掌握相关技术栈。之后,再考虑将相关经验复制到股票、期权市场。
# 编程语言
编程语言有很多,例如python、c/c++、java、rust、go等,各自都有大量的拥趸。
对于没有编程经验的朋友,可以考虑从学习成本最低的python开始。
一方面,python确实容易学习。另一方面,可以找到大量相关学习资料,以及大量的第三方库,避免重复造轮子。最后,遇到任何问题,都比较容易找到解决方案。
有了足够的编程经历之后,再转而去学习更适合自己的的语言,可以达到事半功倍的效果。
万事开头难,没必要再给开头增加难度了。总之,先入门。
# 柜台系统api
普通交易者必须通过经纪商才能进行交易。所以,量化交易程序是通过api接入期货公司柜台系统进行交易。
目前国内四家期货交易所都有自己开发的期货公司柜台系统,上期所的ctp、大商所的飞创、郑商所的易盛、中金所的飞马,还有一些第三方开发的柜台系统,例如盛立、易达、艾克朗科等。
其中,上期所的ctp(官网,交易时间访问:http://www.sfit.com.cn)上市最早,应用也是最广泛的。所以,学习ctp是入门量化交易的首选。
其实,api封装的主要功能是网络通信。api实现了交易程序向柜台系统发送请求,以及接收柜台系统返回的信息。
学习ctp的重点在于理解其中的请求和响应异步回调机制。几乎所有量化交易相关api的网络通信都是这种模式,无非是方法名称有所不同,请求/响应的信息有所差异而已。
ctp官方只提供了c++语言的api。python语言无法直接使用,需要进行一层封装,实现python和c++之间的相互调用。
目前,ctp的python封装都是第三方做的,因为技术门槛不高,所以网上可以找到很多相关项目。AlgoPlus是其中之一。
在python环境中用pip install algoplus命令行安装,也可以下载发行版安装包解压AlgoPlus文件夹后放置在项目目录中。
AlgoPlus封装的ctp api版本是v6.6.9,目前最新的,支持的python版本是3.7、3.8和3.9,可在windows和linux操作系统中使用。
AlgoPlus还提供了许多应用实例,方便入门学习,可以从以下网址下载(原文链接):
https://gitee.com/AlgoPlus/AlgoPlus
# 仿真环境
个人认为,最快的学习途径就是实践。学习量化交易最快的途径就是用程序去交易。
直接用实盘账户学习是不理智的。我们需要一个新手村环境,可以无限次犯错,允许无限次重来。这也是我们学习ctp的一个重要考量。
SinNow仿真系统(官网,交易时间访问:http://www.simnow.com.cn)是ctp官方提供的练兵场。初学者注册仿真账户后可以使用。
SinNow不仅交易时间支持仿真测试,非交易时间还开放7*24环境,重放历史行情支持仿真交易。
在Simnow环境测试通过的程序,只需要更换账户密码、前置地址等信息,就可以接入期货公司生产系统进行实盘交易。
# 前端工具
一个可视化的前端工具,可以让学习过程更直观。在实盘阶段,也方便我们对交易程序进行监控。
当然,可以考虑自己开发,对于学习阶段,及个人项目,建议使用第三方工具+log日志的方式。
快期v2都是一个很不错的选择。这是流行于炒单时代的神器,虽然炒单交易已经没落,但是个人仍然比较喜欢v2简洁的风格。
快期v2早期版本,允许通过修改配置文件,添加测试环境。例如,我这里就添加了一个第三方,N视界(https://n-sight.com.cn/)提供的仿ctp测试环境:
新版安装包禁止了修改配置,如果需要旧版客户端的朋友可以在后台留言“快期”,获取下载地址。
# 项目实践
纸上得来终觉浅,绝知此事要躬行。
再次强调一遍,实践是最快的学习途径。个人推荐新手依次完成以下几个项目进行练手:
- 以tick为数据源,合成K线数据,支持切换交易时间模式和自然时间模式。
- 以tick为数据源,合成某合约所有标的加权平均价,权重为持仓量。例如中证500期货,目前交易标的是IC2304、IC2306、IC2309、IC2312,以这四个合约持仓量为权重,盘中实时计算它们的加权平均价格。最后,思路如何提高算法效率。
- 以K线为数据源,计算简单移动平均、加权移动平均、移动线性回归,并思考如何提高算法效率。
- 写一个交易程序,依次实现买开、卖平、卖开、买平、撤单,并查询订单、成交、持仓、资金账户,等。
- 写一个条件单程序,支持价格条件和时间条件,当实时行情大于/小于某阈值时、或者到某时间点,进行报单。
- 写一个配对交易程序,A和B两个合约,首先报买入A的订单,当A订单有成交发生时,报卖出相应数量的B,如果B短时间内未成交,考虑撤单以更低的价格重报。
- 实现海龟交易策略。
其中,1-3以学习python为目的。4-6以了解ctp为目的。7帮助了解一个策略的组成部分:触发、加仓、资金管理、风控。
AlgoPlus提供的应用实例可以作为参考。可从原文链接处下载。
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。