最近开始研究股票了,自己一个一个的去看,几千支股票完全看不过来啊,想着自己写一个程序,让程序来看股票吧!
股票接口
首先我们需要得到所有的股票代码,好在已经有网页帮我们列出了所有的股票名称和代码,地址是:
http://quote.eastmoney.com/stocklist.html
通过这个页面,就可以抓取了。抓取之后我们就可以存入mysql中,每一个股票可以存一张表,而每一张表中则可以存入股票的动态数据。
这里我们只能获取到一些最简单的数据,一些更加详细的数据还需要获取,这里需要使用一个腾讯财经的接口
http://qt.gtimg.cn/q=sz000858
该接口为获取五粮液的股票数据,返回结果如下:
v_sz000858="51~五 粮 液~000858~52.79~53.70~53.50~63629~24808~38821~52.76~21~52.75~321~52.74~10~52.73~38~52.72~80~52.79~131~52.80~340~52.82~60~52.83~26~52.84~1~09:55:06/52.79/193/B/1018514/1168|09:55:03/52.79/121/S/638756/1166|09:55:00/52.79/48/S/253405/1165|09:54:57/52.79/3/S/15838/1162|09:54:54/52.79/151/B/796991/1160|09:54:51/52.78/105/S/554359/1158~20170615095507~-0.91~-1.69~53.71~52.60~52.79/63267/335599767~63629~33751~0.17~26.81~~53.71~52.60~2.07~2003.78~2003.89~3.95~59.07~48.33~1.99";
解析数据的时候需要按照~进行分割,分割之后数据含义如下
0: 未知,可能是在腾讯数据库中的主键 1: 名字 2: 代码 3: 当前价格 4: 昨收 5: 今开 6: 成交量(手) 7: 外盘 8: 内盘 9: 买一 10: 买一量(手) 11-18: 买二 买五 19: 卖一 20: 卖一量 21-28: 卖二 卖五 29: 最近逐笔成交 30: 时间 31: 涨跌 32: 涨跌% 33: 最高 34: 最低 35: 价格/成交量(手)/成交额 36: 成交量(手) 37: 成交额(万) 38: 换手率 39: 市盈率 40: 41: 最高 42: 最低 43: 振幅 44: 流通市值 45: 总市值 46: 市净率 47: 涨停价 48: 跌停价
通过这个接口我们就可以完善股票基础数据了,从目前来看,我们仅仅需要这些数据。
struct stock{ id, #主键 code, #股票代码,作唯一索引处理 type, #股票类型,有sz,hs分别表示深圳,沪深 name, #股票名称,字符串类型 pe, #市盈率 pb, #市净率 }
接着就是每日下午三点之后更新当日的数据,我们要做的就是对当天的数据进行分析,当日股票的数据结构如下
struct sotck_id{ code, #股票代码 type, #股票类型 open_price, #开盘价 close_price, #收盘价 peak_price, #最高价 low_price, #最低价 main_inflow, #主力流入 main_outflow, #主力流出 main_net_inflow, #主力净流入 }
腾讯还有一个获取资金流向的接口,这让我们很方便的看出主力的操作
接口地址
http://qt.gtimg.cn/q=ff_sz300658
获取的数据结果如下
v_ff_sz300658="sz300658~5918.75~6913.40~-994.66~-4.97~14088.73~13094.08~994.65~4.97~20007.48~49843.378~46441.413~延江股份~20170616~20170615^12366.07^10534.77~20170614^9722.16^8610.57~20170613^12193.90^8315.81~20170612^9642.50^12066.86";
以~分割字符串,得到的结果以及含义如下
0: 股票代码 1: 主力流入 2: 主力流出 3: 主力净流入 4: 主力净流入/资金流入流出总和 5: 散户流入 6: 散户流出 7: 散户净流入 8: 散户净流入/资金流入流出总和 9: 资金流入流出总和1+2+5+6 10: 未知 11: 未知 12: 名字 13: 日期
设定阈值
有了股票数据就好办了,可以利用各种技术指标对股票进行筛选,每天只需要关注符合我们技术指标的股票就可以了,这种方法适合超短线。
常用有可以分析蜡烛图,MACD,主力资金流向等等。这里就不详细多说了,我也是个菜鸟,目前还正在学习。
历史数据验证
设定好了阈值,就可以进行历史数据回测了,通过历史数据来验证我们的程序到底是不是准确。
获取历史数据我们选用凤凰财经的接口,code表示股票的代码。
http://api.finance.ifeng.com/akdaily/?code=sz002307&type=last
这个接口可以一次性获取股票的历史数据,其中每个数组里面的数据如下所示
["2017-06-16","18.180","19.290","18.300","17.400","1000574.62","0.420","2.35","16.614","16.121","16.023","644,057.57","537,300.99","490,775.52","17.95"]
通过与软件的对比,可以得到这些数据的含义
0 日期 1 开盘价 2 最高价 3 收盘价 4 最低价 5 成交量 6 涨跌额 7 涨跌幅 8 5日均价 9 10日均价 10 20日均价 11 5日均量 12 10日均量 13 20日均量 14 换手率
想要实现盈利还是比较困难的,程序只能是辅助,前提是自身的心态一定要好,见好就收,不要贪心。
你可能还喜欢下面这些文章
centos7系统初初始化工作以及网站环境搭建(php7+nginx+mysql)
拿到一台做网站的主机, 我们先要做一些环境初始化的工作, 由于这些工作会有些繁琐,因此记录一下. 后面将这些流程写成一个shell脚本,一次性完成.此次工作流程如下: 安全性设置 额外的目录创建 网站环境搭建安全性设置一般从某云上买的主机, 默认账户是root, 为了不被暴力破解, 我们首先需要设置一个强一点的密码,不过更好的方法是禁用root, 另外创建一个用户来作为日常管理的账户.第一步: 创建一个新的账户,并且能够切换到root权限比如我的用户名叫xiaobai, 添加用户名就是useradd xiaobai设置密码passwd xiaobai之后输入密码,一个新的账户就设定好了.
如果没有额外的设置,iterm2 使用 rzsz 的时候会卡在这个时候就需要使用iterm2提供的trigger来实现rzsz的功能。第一步:本机安装rzsz使用rzsz之前本地也需要安装如果没有安装brew,请先安装brew,mac必备的包管理器!第二步:创建发送和接收脚本发送文件的脚本如下,可以复制下面的内容,保存在 /usr/local/bin/iterm2-send-zmodem.sh中。接收文件的脚本如下,同样可以复制保存在/usr/local/bin/iterm2-recv-zmodem.sh第三步:设置Triggerteigger需要设置两个,一个实发送文件的trigger,一个
在一个高并发,但是数据量不大的系统中,使用Redis做数据库再好不过,结合Swoole,只需要很少的机器就能抗住很大的量。Redis大多数的应用可能都是当做缓存,当作为一个数据库用的时候,就必须要考虑持久化的问题了。持久化的意思就是将内存中的数据写到磁盘中,当再次重启之后,数据可以从磁盘中进行恢复,不会丢失。Redis持久化有两个策略,一个是RDB快照,一个AOF日志,不管是什么策略,最终的目的都是将数据保存在磁盘上,并不高深。只需要耐心的看看这两种策略,就能明白了。RDB快照从名字上我们就能知道这是RedisDB的缩写了,Redis快照是这样生成的,到了需要生成快照的时候,通过fork当前进
这是在工作中遇到的实际问题和解决过程。问题已经被抽象成并发任务的分配问题。问题如果有 n 组数据均分给 m 个处理器处理,那么每个处理器分到的数据是 。如果n组数据的类型有差异,其中有a组是一类数据,剩余 n-a 组是另一类数据。只有同类数据才能被一次性处理,那么该如何分配?这个问题在现实中是存在的。比如HTTP并发请求处理一些数据。数据被批量送来,但类型不一样。为了节省耗时,我们希望并发处理这些不同的数据。并发数是确定好的。现在需要计算每个请求处理的数量,以便我们能给每一个请求打包数据。求解n 组数据交给 m 个处理器处理,每个处理器最多分到 组数据,这是毫无疑问的。如果 n 组数据中有
布隆过滤器(bloom filter)介绍以及php和redis实现布隆过滤器实现方法
引言在介绍布隆过滤器之前我们首先引入几个场景。场景一在一个高并发的计数系统中,如果一个key没有计数,此时我们应该返回0。但是访问的key不存在,相当于每次访问缓存都不起作用了。那么如何避免频繁访问数量为0的key而导致的缓存被击穿?有人说, 将这个key的值置为0存入缓存不就行了吗?这是确实是一种解决方案。当访问一个不存在的key的时候,设置一个带有过期时间的标志,然后放入缓存。不过这样做的缺点也很明显:浪费内存和无法抵御随机key攻击。场景二在一个黑名单系统中,我们需要设置很多黑名单内容。比如一个邮件系统,我们需要设置黑名单用户,当判断垃圾邮件的时候,要怎么去做。比如爬虫系统,我们要记录下
从融资(融券),融资买入(融券卖出)量,资融(融券)余额看多空博弈
股票市场,除了使用自有资金买卖之外,还可以使用融资和融券的方式去买卖股票。融资融资,表示用户看好这只股票,认为会上涨,不惜借钱买入股票,等待上涨之后卖出之后,偿还之前的借款。举个例子,比如股票10元1股,借10000元可以买入1000股,那么当股票按照期望上涨到11元之后,再卖出就能卖到11000,偿还10000之后盈利1000。融券融券,表示用户不看好这只股票,认为会下跌,不惜借股票卖出换钱,等股票下跌之后再买入相同的股票偿还。举个例子,比如股票10元1股,借1000股之后卖出,当股票按照预期下跌到9元的时候,再买入1000股,只需要花9000,偿还1000股之后,手中盈利1000元。多头和
娱乐之作,大家见笑。^ - ^本文利用神经网络对股市的预测结果作为分析的对象,打开神经网络的黑箱,找到股市中涨跌的秘密。量价特征想要预测股市涨跌,就需要了解在股票上涨和下跌的时候,前一天发生了什么。就好像我们想要预测明天天气的时候,总会想尽办法找到过去几十年甚至几百年下雨的前一段时间都有哪些征兆。预测股票也一样,我们需要想尽一切办法找到某只股票过去几年里面价格上涨的前一天都有哪些特征,越全面越好。找特征不是一件简单的事情,有效的特征可以为我们增加预测的精准度,而无效的特征会对训练造成干扰。首先从最简单的量价特征开始,即今天的股票的价格变化和交易量变化。为什么是这两个特征?我的理论依据是市场所有
特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法做一个总结。本文关注于特征选择部分。后面还有两篇会关注于特征表达和特征预处理。1. 特征的来源在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征;另一块是我们从业务特征中自己去寻找高级数据特征。我们就针对这两部分来分别讨论。2. 选择合适的特征我们首先看当业务已经整理好各种特征数据时,我们如何去找出适合我们问题需要的特征,此时特征数可能成百上千,哪些才是我们需要的呢?第一
在使用apidoc之前,我一直使用wiki来写文档,后来发现这种方式更新起来比较痛苦,时间一长甚至就忘记了更新了。一直在寻找能够使用注释直接生成文档的程序。某一天同事推荐了apidoc,发现这正是我想要的工具。apidoc原理apidoc的原理是扫描你的代码文件,提取出注释部分,根据一些规则生成相应的文档。默认的模板久很美观,十分适合作为api文档的生成器。目前apidoc支持的注释基本涵盖了大部分语言的风格了,c,java,php,js,python,perl,lua, Erlang...安装需要使用npm安装,如果没有安装npm,请先去https://www.npmjs.com/下载npm
基于信息熵原理分词这个概念很早了,用php实现了个,一气呵成,代码自然是,反正我也没有二次检查,呵呵。不过耗费内存是真的,真的很消耗内存!写这个的好处就是我明白了很多东西...代码如下<?php/** * 基于信息熵的无词典分词*/class partword{ /** * 词语最大长度 */ public $maxwordlen = 5; /** * 需要进行分词的文字 */ public $text; /** * 字符串长度 */ private $len; /** * 切分的单个文字
赞赏微信赞赏支付宝赞赏