Note

交易小苑25:免费获取期货的行情数据

· Views 1,718

对于刚刚从事量化交易的朋友来说,有一个免费的稳定的历史数据和行情数据来源,是十分重要的。有历史数据,你才可以进行回测检验;有行情数据,你才可以更新数据,喂给你的交易策略,从而产生交易目标持仓。

 

对于历史数据,你可以在淘宝上买,或者管有数据的朋友要,但是毕竟不能每天都做一次,来更新你的数据库,这样太麻烦了;而最新行情数据,我之前提供了一个解决方案,只要有期货实盘或者模拟账号,就可以下载数据。

 

岑秋苑:交易小苑24:量化交易从零到一

 

感兴趣的可以加我的微信longdd504(注明知乎,量化解决方案)。

 

但是在这个解决方案中,你用自己的计算机跑自己的程序,数据来源于单一的期货公司,那么数据难免不稳定,比如网络中断,或者程序操作错误,那么你就丢了一部分数据,而这部分数据光靠自己的程序是没办法补全的。这很可能就导致因为数据不全,交易没法进行了。

 

如果有另一个数据来源,可以及时更新数据,作为补充,那么本地数据暂时中断,也就没什么问题了。本文,就介绍一个从新浪财经数据接口,获取比较及时的期货数据的方法。

 

数据接口

 

新浪的数据接口是很简单的,本质上你只需要输入一个网址,你就会收到一个以文本形式发送的历史数据。

 

网址案例如下,读取m1905五分钟级别行情数据。

http://stock2.finance.sina.com...

其他的内容不用改,只需要改两个网址参数,一个是5m(KLine5m),代表五分钟级别数据,这是最低频率,目前还没有1m数据。其他可选的诸如15m,30m,60m等等。第二个是M1905(symbol=M1905),即合约名称,需要大写。另外郑州的名称需要加一位年份,即获取TA905合约,要输入TA1905。

 

如果在浏览器中输入这个地址,你会得到一个文本信息如下。

交易小苑25:免费获取期货的行情数据

文本由中括号和逗号分隔,放大看如下。

交易小苑25:免费获取期货的行情数据

依次是行情时间,开盘价、最高价、最低价、收盘价、成交量。这是我在14:08分查询的结果的第一个数据,这里需要注意的是,这个数据标记的时间却是14:10。实际上,这个数据还在更新中,就和大家的行情软件看到的最新行情一样,行情发生变化,这个数据也会变化。除了最近的一个数据之外,其他的14:05,以及之前的数据,都已经确定,都不会再发生变化了。因此使用这个数据要小心,如果你把这个数据保存到本地,但是下次没有更新,这个数据就是错误的。

 

使用python读取新浪行情

 

用python读取新浪免费行情信息是比较简单的,只需要几行代码就可以实现了。

 

首先需要使用python的工具包requests,来访问网络信息。

import requests
data = requests.get("http://stock2.finance.sina.com...").content

这样,你就获得了一个文本数据,数据的内容和你在浏览器上看到的是一模一样的。实际上,你获得的数据的格式是json,具体是怎么回事不重要,感兴趣可以自己了解。在python里面,只需要一个现成的工具包,就可以解析。

import json
data = json.loads(data)

这样你就将一个不好处理的文本数据,转变成了python好处理的数据形式。目前data的格式是由每个分钟行情list组成的一个大list。当然,我们更习惯用表格的形式来看行情,我们可以使用python的一个数据分析包来进一步处理。

import pandas as pd
data = pd.DataFrame(data)

然后,你就在程序中有自己的数据了。数据按时间降序排列,最前面的是最近的行情。

交易小苑25:免费获取期货的行情数据

尾部是比较远的行情。

交易小苑25:免费获取期货的行情数据

可以看到,数据一直到3个交易日之前,长度还是不错的,想获得3天前的数据,也是可以的。那么再早的数据怎么办呢?一个好的办法,就是自己保存,建立自己的数据库。因为新浪数据长度还可以,你每天两三天下载一次就够了,当然记得别忘了,中间中断了,也是没办法补全的。

 

我个人习惯将数据升序排列,同时列名称也想改一下,然后把index改成时间格式,方便时间检索,所以对数据再操作一下,具体代码如下,仅供参考,根据不同需求可以更改。

data = data.sort_values(0)
data.columns = "datetime open high low close volume".split()
data = data.set_index('datetime')
data.index = pd.to_datetime(data.index)

 

行情数据接口评价

 

新浪财经提供数据服务很多年,数据整体来说质量还是比较高的,因此按照我之前说的办法,每两三天下载一下,作为历史回测之用,是足够的。当然从现在积累数据还是太少了,可以买或者要到过去的,然后自己积累增量的。另外新浪最高的频率是5分钟,这个对于比较高频的策略可能就比较无能为力了,但是大家不要高估期货的1分钟波动性,其实一分钟级别上,很多期货品种都是不太动的,5分钟得观看频率,也是足够用的。

 

对于行情补全,新浪数据也是可以的。如果你的策略5分钟交易一次(对于期货来说,5分钟这种频率真的不少;很多人听了高频交易的兴起,觉得每个tick进行交易决策才是必要的,但是你能不能预测好tick级别的价格走势也是你需要考虑的,你要知道预测tick的竞争是非常激烈的;所以预测不好大可以不预测,术业有专攻,没必要什么都参与,听说什么学什么,最终反而邯郸学步了),你使用新浪的数据直接驱动交易也是可以的,网络数据和本地比肯定会有几秒的延迟,但是对于大部分人,你真的不差这几秒,省时省力,开发速度快,反而是更有意义的(至少新浪作为行情源,几行代码就搞定了)。

 

 

 

Disclaimer: The content above represents only the views of the author or guest. It does not represent any views or positions of FOLLOWME and does not mean that FOLLOWME agrees with its statement or description, nor does it constitute any investment advice. For all actions taken by visitors based on information provided by the FOLLOWME community, the community does not assume any form of liability unless otherwise expressly promised in writing.

FOLLOWME Trading Community Website: https://www.followme.com

If you like, reward to support.
avatar

Hot

No comment on record. Start new comment.