用程序帮你炒股(2)

6月26日A股大跌,据估算市值蒸发4.5万亿。当日的领涨板块,你们感受一下:

银行 -4.66%

食品饮料 -6.94%

建筑装饰 -7.14%

有入市的朋友,不知是否腿脚够快,躲过此劫。

本主题之前一篇文章讲了如何从雪球抓取投资组合。不过现在看来,在市场面前,非理性的人类是靠不住的。这两周的暴跌,雪球上大部分的组合也没有多好的表现。大多数人都会在买卖之前预测涨跌,并根据预计的结果选择操作。但未来是无法预测的,对于没有很强专业技能、只依赖道听途说的小散户来说,这种操作方式近乎于赌博,而且还是那种不经概率计算的赌博。

所以,作为一个程序员,只有真实的数据和理性的逻辑推理可以依赖。无法预测未来,但你可以总结历史规律。

那么问题来了。首先,你得有历史数据。

老办法,先去找搜索引擎。搜一下诸如“股票历史数据”、“历史K线数据”之类的关键词,就会有不少文章,里面提到一些可以使用的接口。实时行情接口有些是需要购买,但历史数据没有很高的时效性,可以找到不少免费的。

在一篇叫做《获取历史K线数据的几个方法》的文章中,说到一个和讯网的历史数据接口:

http://flashquote.stock.hexun.com/Quotejs/DA/1_000001_DA.html

试了可用,于是就用它来抓取历史数据。地址中的 1_000001,1 表示沪市,2 表示深市,后面六位是股票代码。

这个接口的使用很简单,完全公开,没有什么验证,直接 urllib 的 urlopen 就可获取内容:

req = urllib.urlopen(url) data = req.read()

在浏览器中访问下接口,看到它的数据格式是:

refreshDataStr('000001','1','DA','[[19901219,0.00,96.05,99.98,95.79,99.98,126000,494000], ... ,[20140828,2209.47,2210.48,2219.47,2194.86,2195.82,12422901400,109266624772]]');

有规律,但不是标准数据格式,所以要稍为处理一下。可以写正则去匹配,或者就数一下前后字数,直接用字符串截断,掐头去尾:

data = data[36:-5]

得到的数据在分割为 list:

dataset = data.split('],[')

每一条数据里,数值含义依次为:

交易日期、昨收盘、开盘、最高、最低、最新价、成交量、成交额

按自己的需要去存储就可以了。

实际抓取过程中遇到的一些问题

1. 抓取一些老股票的数据时,数据只到 2014 年。估计是因为数据量太大,到了默认上限。于是去和讯网上看了下网页上请求时的参数,发现有一个 start 的参数。当设置成 start=201601010000(一个比今天日期还大的时间)时,就可以拿到所有数据。但参数具体含义并不清楚,不知道是否对所有请求都有效。

2. 这些数据是“除权”后的数据,也就是说有的时候上一个条数据的最新价是 30,但下一条的昨收盘就变成 20 了。这对于之后分析历史数据是有很大影响的。我没有找到可以获取复权数据的参数或方法,用了一个解决方案就是在存储时比较上一条最新价和下一条昨收盘直接的差异,自行进行向后复权处理。(除权复权的具体含义可自行了解)

3. 我仍然用了之前的 django 框架对抓下来的数据进行建模和存储,便于以后的使用和分析。并且把抓取的功能结合在了 django 自带的 admin 系统上。对于从 Github 上下载的代码,可参考其中的抓取部分。若想使用存储部分,需配置好 django 1.8,这里我不再赘述。

4. 添加诸如 matplotlib 的绘图模块,你可以把数据用坐标画出来。并非要做一个行情查看软件,所以我这里就只很简单的显示一下。

相关代码继续加在之前的 Github 项目中:

github.com/crossin/avalanche

有了这些数据之后可以干什么?

最想要的当然就是预测走势!有很多成熟的理论,什么MACD、均线、成交量……你也可以自己捣鼓一套模型,比如用统计概率去归纳啦、用导数去推算啦、用贝塞尔曲线去拟合啦、用隐马尔可夫模型去预测啦……用本人高中数学老师的一句话来说就是:反正你也就是碰运气,你自己瞎蒙不如让我来帮你蒙,蒙对的概率还大一点。

更实际的用处就是验证交易策略。不管你依据什么方式来交易,哪怕是用飞镖往钉在墙上的证券报纸上扔来选择股票,用掷骰子来决定买卖,都可以通过程序在历史数据上进行验证,而不需要去市场上交学费被打脸。

当你建立了强壮的交易模型,经过众多历史数据的反复验证和不断修正,有着很高的成功率之后,就可以带着你的程序去真金白银的市场上了。到那个时候,股市就是你的提款机。

怎么样,听上去是不是碉堡了。

然而,这并没有什么卵用。

上帝不掷骰子。但你不是上帝。

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2015-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯数据中心

变频冷机在超低负载下如何安全又节能运行?

使用变频冷机是为了节能,节能的前提是“冷机处于非满载工况下运行”。但如果当冷机负载太低(低于30%以下),冷机不仅无法有效节能,甚至不能正常工作——此时冷机会反...

43320
来自专栏AI研习社

博客 | Github开源人体姿态识别项目OpenPose中文文档

人体姿态识别与估计的应用场景:抖音尬舞机、体育动作教学、3D健身教练、3D试衣、绘画辅助、游戏人物动作采集。

1.8K40
来自专栏牛客网

蚂蚁金服一面面经

本来以为自己的简历不可能跳过笔试,所以最近在刷笔试题,没有怎么复习安卓,在加之有些紧张,凉凉,呜呜呜~~~~~~~ 阿里不给通知,毫无预兆的打过来电话面试,面试...

50860
来自专栏编程

Python数据分析系列(2)——美国纽约皇后区空气质量分析

作者:王大伟 Python爱好者社区唯一小编 博客:https://ask.hellobi.com/blog/wangdawei 关注Python爱好者社区回复...

32350
来自专栏玉树芝兰

如何用 R 快速了解科研领域?

用好 R 环境下的 BiblioShiny 软件包 ,可以让你在友好的图形化界面,快速扫描科研领域。

19140
来自专栏机器之心

资源 | OpenAI开源机器人模拟Python库mujoco-py:可高效处理并行模拟

选自OpenAI 机器之心编译 参与:黄小天 OpenAI 宣布开源一个高性能的 Python 库,它可用于使用 MuJoCo 引擎(在上年的机器人研究中开发出...

41440
来自专栏AI2ML人工智能to机器学习

当arXiv遇到Twitter

arXiv是一个开放的存放预备版(preprint)文章的地方。 这个Cornell University在1991开启的项目, 因为Grigori Perel...

10030
来自专栏算法+

音频算法之小黄人变声 附完整C代码

前面提及到《大话音频变声原理 附简单示例代码》与《声音变调算法PitchShift(模拟汤姆猫) 附完整C++算法实现代码》

96270
来自专栏量子位

陈天奇团队发布NNVM编译器,性能优于MXNet,李沐撰文介绍

夏乙 若朴 编译整理 量子位 出品 | 公众号 QbitAI 亚马逊和华盛顿大学今天合作发布了开源的端到端深度学习编译器NNVM compiler。 先提醒一句...

51060
来自专栏企鹅号快讯

2017年与机器学习相关的10大Python开源库

作者|Alan Descoins 译者|薛命灯 编辑|Emily Pipenv Pipenv 最初是由 Kenneth Reitz 开发的一个业余项目,旨在将其...

216100

扫码关注云+社区

领取腾讯云代金券