通过使用券商api 开启python量化交易编程的免费入门教学

2023-03-06 09:03发布

这个是前几天我亲自弄的入门Python操作指导,后面可以做量化编程,主要是可以为我们做交易策略提供一个分析工具。不需要外面的那种9.9学Python,这个就是免费学Python的了,大家按照文章步骤操作就好了,每一步也都有操作截图。


首先说下这篇文章是我自己操作过的一个技术实操帖,本来是适合在这种广大程序员码农们的地盘分享的帖子,类似CSDN这样的平台去讲的,但是由于一堆朋友对股票投资的量化策略交易感兴趣,且python入门还很简单易学,即便是一些没学过代码的朋友,也都可以按照我等下要讲的图文教学来跑通第一个python的第一个程序,所以这里详细来给大家写一篇来带粉丝们入门,大家可以先过一遍文章之后拿上电脑按照下文的步骤一步步跟着实际操作。


这里先说下编程其实并没有大家想象的那么困难,比如你要实现一些地调取行情,买卖交易,实际上直接复制某知名港美股券商给的一些代码就可以实现了,至于怎么实现调取行情,买卖交易这些某知名港美股券商都给你写好了底层的代码,这些就叫做API, 其实很多程序员也都是熟练使用ctrl c(复制)和ctrl v(粘贴),CV别人的代码挺好的,因为至少他具备了搜索以及自己解决问题的能力。而他们很多案例就可以直接CV来解决自己的需求了。某知名港美股券商提供了Python、Java、C#、C 、JavaScript5种编程语言的api代码,这里Python是最简单易学的,我们后面给大家分析的也都是通过Python还有券商提供的api来操作。




先说一个背景,就比如我之前我在写交易的公众号上面说的这个套利策略:




透露一个Trader的日内T 0的规律票套利策略玩法




如果可以通过编程把某一个股票的最后一分钟k线的涨跌幅全部导出,那是不是就可以回测出胜率情况了?比如某个股票这三个月来,每天最后收盘的最后1分钟涨跌幅情况。这个API里面可以获取到这些历史数值,比如00700股票这三个月来每天收盘的最后1分钟的涨跌幅情况,如下图所示,也是这几天我写好的案例。这里我通过python程序统计了腾讯,美团阿里最后一分钟涨跌幅这三个月以来的数据还有胜率情况。




这个要是手工统计虽然也是可以的,但是肯定很耗时间,三个月的数据需要花费不少功夫的。如果python可以完成这个操作,是不是就非常方便了,再如果可以自动下单买卖,那就是量化交易的一种了。




下面开始给大家说说具体是要怎么玩,首先是需要看某知名港美股券商的操作说明:


这里不能发外部链接,需要的可以来私聊的。


他们给的这个futu-api操作文档其实还是很不错的,实操性很强,各种接口都有案例代码可以复制粘贴,给我们量化编程节省了很多时间,这个的确是值得夸奖的。


我是用电脑Windows 10 的 64 位操作系统来操作的,就是大家平时用的普通电脑,首先需要安装三个软件:FutuOpenD,Python解释器,PyCharm编译工具,这里下载完成之后以后的用法就是我下图这样的:






1.FutuOpenD




FutuOpenD是 券商给的网关程序,需要下载安装,运行于您的本地电脑就可以,负责指令数据请求到券商的服务器,并将处理后的数据返回。FutuOpenD提供可视化和命令行两种运行方式,命令行是给码农们用的,比较复杂不适合广大散户朋友,我们这里介绍操作比较简单的可视化 FutuOpenD,下载之后直接安装到自己电脑里面。


按照futuapi的文档操作需要注意的地方如下所示:


打开这个FutuOpenD 软件之后,直接输入某知名港美股券商的账户名和密码,选择记住密码和自动登录就行了,至于右边基础设置和高级设置里面不需要去操作的,全部按照默认就好了。api文档上面写的密文是明文这些都不用去管,那些是不在自己电脑操作才需要弄的,不是给非专业玩家搞的。简单点弄直接下载登陆之后就可以不用管他了。


专业的解释是这样的:


在本地或云端安装并启动一个网关程序 FutuOpenD。FutuOpenD 以自定义 TCP 协议的方式对外暴露接口,负责中转协议请求到券商服务器,并将处理后的数据返回,该协议接口与编程语言无关。




2.Python解释器


按照futuapi的文档操作,需要下载安装。这个是python解释器,解释python脚本执行的程序,当开发者在编写python代码保存后,就会得到一个以“.py”为扩展名的文本文件,若要运行此文件,就需要python解释器去执行“.py”文件。Python版本要求:Python 3.6 及以上,这个用法更简单,直接下载之后就可以不用管他了。




3.PyCharm编译工具


PyCharm这是复制和写代码用的,同样需要按照futuapi的文档操作,需要下载安装,pycharm是一款编程软件(码农的专业世界里面叫做IDE),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。这个是最主要的,也是我们在这个过程中用得最多的软件。


如果你想实现任何股票历史数据整理,量化分析量化交易,需要编写代码或者复制粘贴的代码都在这里,或者从其他地方复制代码,粘贴在这里的,然后编译跑起来。


按照futuapi的文档操作需要注意的地方如下所示:




下载安装好了这三个软件之后,就可以正式开始我们的python编程的第一个简单程序的运行了。


第一步:注册开户某知名港美股券商以及使用券商账户登录 FutuOpenD,因为会有订阅额度和历史 K 线额度限制的限制,非某知名港美股券商客户的基本上就无法使用了,还没开的可以点击下面链接注册开户:





第二步:下载 券商的的Python API。操作上这样的在 cmd 中直接使用 pip 安装。



首先需要知道cmd怎么打开?这里给小白朋友们说下:


按WIN键 R键打开运行,输入cmd后回车进入命令提示符,cmd上输入指令


初次安装:Windows 系统窗口 输入指令 pip install futu-api


二次升级:Windows 系统窗口输入指令 pip install futu-api --upgrade


输入完成之后等待一段时间,因为他们会自动下载券商的Python API中间不要停也不要关掉,一直等到全部完成,会出现C:Users...这样的就代表下载结束了,可能中间会出现网速慢连接超时的情况,会导致操作失败,就和我下图这种情况这样,切换一个网络,比如用手机热点来连接电脑,再去输入指令pip install futu-api --upgrade重新下载。


直到不再出现红色字体报错,就算是完成了,正确完成之后如果输入pip install futu-api --upgrade或者pip install futu-api会出现下图这个情况。


此时券商api的代码包算是成功下载到电脑里面




第三步:创建新项目

打开 PyCharm编程软件,在 Welcome to PyCharm 窗口中,点击 New Project,按照下图的操作打开。


可以先学会编译的操作,这个main.py是一个主函数,可以初始代码运行起来是可以打印出Hi PyCharm的,如下图所示:


第四步:futu api的包添加进工程。这一步非常重要,券商api的的说明书操作步骤里面没详细写这个,只在Q&A里面提到了,在第三步新建的工程下面点击file--->setting...--->Project :pythonProject --->Python Interpreter --->点击 (添加futu-api的库)--->选择futu-api--->Install Package



Futu API 的正确名称为futu-api,而非“futu”。如果您安装过名为“futu”的第三方库,请将其卸载。



点击了Install Package之后,等待大约1分钟左右会添加成功,如下图所示

这里说下如果没添加成功,futu-api的库,程序编译跑起来的时候会出现我遇到的 这样的问题,会出现5个错误警告的,也会出现各种问题。







第四步:复制代码编译

复制某知名港美股券商的api教程中的代码,让第一个量化程序跑起来!

紧接着上面的代码,在main.py里面,从18行开始复制下面的代码进去


示例代码功能包括查看行情快照、模拟交易下单。


from futu import *


quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111) # 创建行情对象


print(quote_ctx.get_market_snapshot('HK.00700')) # 获取港股 HK.00700 的快照数据


quote_ctx.close() # 关闭对象,防止连接条数用尽


trd_ctx = OpenSecTradeContext(host='127.0.0.1', port=11111) # 创建交易对象


print(trd_ctx.place_order(price=500.0, qty=100, code="HK.00700", trd_side=TrdSide.BUY, trd_env=TrdEnv.SIMULATE)) # 模拟交易,下单(如果是真实环境交易,在此之前需要先解锁交易密码)


trd_ctx.close() # 关闭对象,防止连接条数用尽




之后右击,点击run file in python console 运行,可以看到运行成功的返回信息如下:如下图所示的这种情况是代表成功了,可以看到运行的结果里面有00700相关信息。






第五步:继续完善代码,



讲下面的代码紧接着上面的代码,使用ctrl c(复制)和ctrl v(粘贴)添加进去第四步的代码里:




import pandas as pd


pd.set_option('display.max_rows', 5000)pd.set_option('display.max_columns', 5000)pd.set_option('display.width', 1000)




至于为什么这么做,券商给的教程里面也说明了:


Q6:为什么我获取的 DataFrame 数据,只能展示一部分 ?

A:打印 pandas.DataFrame 数据的时候,如果行列数过多,pandas 默认会将数据折叠,导致看起来显示不全。因此,并不是接口返回数据真的不全。您只需要在 Python 脚本前面加上如下代码即可解决。






弄完之后再次点击run file in python console 运行,这次可以看到运行的结果里面有00700腾讯股票的相关行情信息了,可以看到昨天收盘腾讯的报价。




到此已经可以了,如果你想在cmd指令里面跑,可以输入指令 python main.py,可以输入python之后,打开main文件的文件夹,讲main文件拖入cmd指令就可以了。这里需要写清楚main.py的位置,这样也就可以在cmd指令里面运行了。






这样第一个量化程序就完成啦!是不是python的用在券商上面做量化编程操作起来很简单?嗯,按照我给的这个流程操作确实会很简单。具体后续需要实现什么功能都可以看下券商他们给的那个文档,就是直接调用这些接口,基本上也是复制粘贴就好了,稍微按照你自己的需求修改一些应该可以了,入门玩玩python量化交易确实不是太难打事情,就是需要有耐心去慢慢搞,有问题也都可以网上去多查查。





有这个入门级别的python量化交易的教学,大家就不用去买那些网上付费python卖课的,自己稍微研究一下都可以搞定了。操作完成我上面写的那些,那恭喜你,python的开入门级开发环境以及简单的python编程就已经完成了,你将正式开启了python编程量化交易之旅!




某知名港美股券商的案例里面还给了各种不同的api,比如想找某个股票历史k线,代码可以直接复制到我们上面建立的工程中去用的。





最主要的是通过上面的这一系列操作,相当于把整个Python的开发环境都已经搭建起来了,即便是后面网上找到或者拿到别人的Python代码,因为你有了这个开发环境,就可以在这里直接运行得到结果,比起没操作过的人无法运行.py的程序来说优势还是很大的。这一点就非常方便小白朋友了。




也欢迎大家多多告诫身边的朋友,觉得有用的方便文末帮我们“点赞” “点在看”让更多的朋友看到!






我个人原本也是程序猿的,大学期间以及毕业工作后的几年,我原本是一直从事的都是嵌入式软件开发的岗位,学和用的都是C语言,python这个我没接触过,目前也是刚学习,也算是才入门,也弄了一个量化投资的qun,有兴趣的朋友可以一起多多交流,欢迎关注爱投资的小熊猫