Stockholm
=======
#### 一个股票数据(沪深)爬虫和选股策略测试框架,数据基于雅虎YQL和新浪财经。
* 根据选定的日期范围抓取所有沪深两市股票的行情数据。
* 根据指定的选股策略和指定的日期进行选股测试。
* 计算选股测试实际结果(包括与沪深300指数比较)。
* 保存数据到JSON文件、CSV文件。
* 支持使用表达式定义选股策略。
* 支持多线程处理。
能干什么
-------------
如果你想基于沪深股市行情数据进行一些工作,它可以帮助你导出指定时间范围内所有沪深A股的行情数据和一些技术指标,包括代码、名称、开盘、收盘、最高、最低、成交量、均线、KDJ等。<br>
如果你对于技术分析有兴趣,它可以帮你根据你自定义的策略在所有沪深A股的范围内进行选股,并回测选股策略的收益情况(详细说明后面会有)。这样就能够非常方便快捷地测试和调整基于技术分析的选股策略。<br>
还有些什么问题
-------------
行情数据目前来源于雅虎YQL,每日数据的更新时间不太稳定(一般在中国时间午夜左右)。<br>
目前支持的技术指标还不多,还有一些指标如MACD和BOLL后续会增加。<br>
在回测中,如果有在选定时间内发生过除权的股票,收益计算会有问题。<br>
导出格式目前只支持CSV和JSON文本。MongoDB和MySQL会考虑后续加入。<br>
环境
-------------
Python 3.4以上<br>
[Requests](http://www.python-requests.org/en/latest/)<br>
[PyMongo](http://api.mongodb.org/python/current/installation.html)<br>
OSX和CentOS已测。Windows尚未测试,输出路径可能有问题。<br>
```shell
pip install requests
pip install pymongo
```
使用
-------------
```shell
python main.py [-h] [--reload {Y,N}] [--portfolio {Y,N}]
[--output {json,csv,all}] [--storepath PATH] [--thread NUM]
[--startdate yyyy-MM-dd] [--enddate yyyy-MM-dd]
[--targetdate yyyy-MM-dd] [--testrange NUM] [--testfile PATH]
```
可选参数
-------------
```shell
-h, --help 查看帮助并退出
--reload {Y,N} 是否重新抓取股票数据,默认值:Y
--portfolio {Y,N} 是否生成选股测试结果,默认值:N
--output {json,csv,all} 输出文件格式,默认值:json
--charset {utf-8,gbk} 输出文件编码,默认值:utf-8
--storepath PATH 输出文件路径,默认值:~/tmp/stockholm_export
--thread NUM 线程数,默认值:10
--startdate yyyy-MM-dd 抓取数据的开始日期,默认值:当前系统日期-100天(例如2015-01-01)
--enddate yyyy-MM-dd 抓取数据的结束日期,默认值:当前系统日期
--targetdate yyyy-MM-dd 测试选股策略的目标日期,默认值:当前系统日期
--testrange NUM 测试日期范围天数,默认值:50
--testfile PATH 测试文件路径,默认值:./portfolio_test.txt
```
可用数据/格式
-------------
### 行情数据:
```shell
[
{"Symbol": "600000.SS",
"Name": "浦发银行",
"Data": [
{"Vol_Change": null, "MA_10": null, "Date": "2015-03-26", "High": 15.58, "Open": 15.15, "Volume": 282340700, "Close": 15.36, "Change": null, "Low": 15.04},
{"Vol_Change": -0.22726, "MA_10": null, "Date": "2015-03-27", "High": 15.55, "Open": 15.32, "Volume": 218174900, "Close": 15.36, "Change": 0.0, "Low": 15.17}
]
}
]
```
Date(日期); Open(开盘价); Close(收盘价); High(当日最高); Low(当日最低); Change(价格变化%); Volume(成交量); Vol_Change(成交量较前日变化); MA_5(5日均线); MA_10(10日均线); MA_20(20日均线); MA_30(30日均线); KDJ_K(KDJ指标K); KDJ_D(KDJ指标D); KDJ_J(KDJ指标J); <br>
以上数据都可以用于制定选股策略,后面会介绍具体方法。<br>
### 选股策略测试数据:
```shell
[
{
"Symbol": "600000.SS",
"Name": "浦发银行",
"Close": 14.51,
"Change": 0.06456,
"Vol_Change": 2.39592,
"MA_10": 14.171,
"KDJ_K": 37.65,
"KDJ_D": 33.427,
"KDJ_J": 46.096,
"Data": [
{"Day_5_Differ": 0.01869, "Day_9_Profit": 0.08546, "Day_1_Profit": -0.02826, "Day_1_INDEX_Change": -0.00484, "Day_3_INDEX_Change": 0.01557, "Day_5_INDEX_Change": 0.04747, "Day_3_Differ": 0.02647, "Day_9_INDEX_Change": 0.1003, "Day_5_Profit": 0.06616, "Day_3_Profit": 0.04204, "Day_1_Differ": -0.02342, "Day_9_Differ": -0.014840000000000006}
]
}
]
```
Close(收盘价); Change(价格变化%); Vol_Change(成交量较前日变化); MA_10(十天均价); KDJ_K(KDJ指标K); KDJ_D(KDJ指标D); KDJ_J(KDJ指标J); Day_1_Profit(后一天利润率%); Day_1_INDEX_Change(后一天沪深300变化率%); Day_1_Differ(后一天相对利润率%——即利润率-沪深300变化率); Day_n_Profit(后n天利润率%); Day_n_INDEX_Change(后n天沪深300变化率%); Day_n_Differ(后n天相对利润率%——即利润率-沪深300变化率);
行情数据抓取范例
-------------
获取从当前日期倒推100天(不是100个交易日)的所有沪深股票行情数据。<br>
执行完成后,数据在当前用户文件夹下./tmp/stockholm_export/stockholm_export.json<br>
```shell
python main.py
```
如果想导出csv文件
```shell
python main.py --output=csv
```
选股策略测试范例
-------------
选股策略范例文件内容如下(包括在源码中)<br>
选股策略"method 1"是:前前个交易日的KDJ指标的J值小于20+前个交易日的KDJ指标J值小于20+当前交易日的KDJ指标J值比上个交易日大40+当前交易日成交量变化大于100%<br />
```shell
## Portfolio selection methodology sample file
[method 1]:day(-2).{KDJ_J}<20 and day(-1).{KDJ_J}<20 and day(0).{KDJ_J}-day(-1).{KDJ_J}>=40 and day(0).{Vol_Change}>=1
```
以当前系统日期为目标日期进行倒推60天得选股策略测试。<br>
不重新抓取行情数据并执行测试命令。<br />
执行完毕后,会将测试结果按照每天一个文件的方式保存在./tmp/stockholm_export/。<br>
文件名格式为result_yyyy-MM-dd.json(例如result_2015-03-24.json)。<br>
```shell
python main.py --reload=N --portfolio=Y
```
通过更改测试文件中的选股策略公式,可以随意测试指定时间范围内的选股效果。<br>
JJJ69
- 粉丝: 6370
- 资源: 5917
最新资源
- 流媒体服务zlm,支持天地伟业设备接入版本
- 三菱FX系列PLC温度PID控制程序(含注释和IO图、三菱触摸屏程序),程序已经应用于设备上,成熟可靠,有程序注释,触摸屏有注释值得参考和借鉴.
- 欧姆龙NJ的控制程序,里面功能齐全,相机,机器人,RFID,转盘,检测传感器,伺服等,里面模板程序大部分都是LAD写的,方便宜读,对于新手上手块,里面很多功能块都可以直接套用,程序里写的逻辑思维程序也
- 流媒体服务zlm,支持天地伟业设备接入版本
- 单相逆变变频器,双闭环控制策略,电压环和电流环均采用Pi控制,输出电压稳定 0~0.5S输出电压频率20HZ 0.5~1S输出电压频率50HZ 1~1.5S输出电压频率100HZ 也可以直接设置输出
- 2KW移相全桥整机Matlab Simulink仿真模型电源学习资料,报告mathcad参数设计,模型搭建过程,参考资料,仿真模型等,很全面的移相全桥学习资料
- CRUISE纯电动车仿真模型,simulink DLL联合仿真,实现电制动优先能量回收策略 关于模型:策略是用64位软件编译的,如果模型运行不了请将软件切成64位 切位置在启动界面platform
- 可以切割提取多页PDF集合中指定页码间的页
- 车辆紧急防避撞AEB控制,模型包含建立驾驶员制动模型来模拟制动过程,同时加入模糊控制实现期望减速度的计算,加入纵向发动机逆动力学模型实时求解期望节气门开度,驱动与制动的切控制,以及制动压力与减速度之间
- 遥感场景图像分类数据集【已标注,约15000张数据】
- 驾校模拟考试软件,理论考试练习软件
- 增加HID服务20250108-173901.7z
- 四轮独立驱动横摆角速度控制,LQR 基于LQR算法的 基于二自由度动力学方程,通过主动转向afs和直接横摆力矩dyc实现的横摆角速度跟踪 ,模型包括期望横摆角速度,质心侧偏角,稳定性因素,lqr模块等
- YS9082HP-MPToolV8.00.00.00.012-FW210520-release-B37&B47.rar
- YS9082HP-MPToolV8.00.00.01.025-HPS2704M-release-N38B.rar
- MATLAB环境下一种基于深度学习的NASA涡扇发动机 化仿真数据集剩余使用寿命预测方法 算法运行环境为matlab r2018a,执行基于深度学习的NASA涡扇发动机 化仿真数据集剩余使用寿命预测
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈