stockholm-pro


Namestockholm-pro JSON
Version 1.2.1 PyPI version JSON
download
home_pagehttps://github.com/yanjlee/stockholm
Summary一个股票数据(沪深)爬虫和选股策略测试框架,数据基于雅虎YQL和新浪财经。
upload_time2024-06-01 08:28:53
maintainerNone
docs_urlNone
authoryanjlee
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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 />

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yanjlee/stockholm",
    "name": "stockholm-pro",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": null,
    "author": "yanjlee",
    "author_email": "yanjlee@163.com",
    "download_url": "https://files.pythonhosted.org/packages/00/04/a6e1121a6f9047fea1c5dd05435bd0effe411b26f39aa57e3fac8ca50d1a/stockholm_pro-1.2.1.tar.gz",
    "platform": null,
    "description": "Stockholm\r\n=======\r\n\r\n#### \u4e00\u4e2a\u80a1\u7968\u6570\u636e\uff08\u6caa\u6df1\uff09\u722c\u866b\u548c\u9009\u80a1\u7b56\u7565\u6d4b\u8bd5\u6846\u67b6\uff0c\u6570\u636e\u57fa\u4e8e\u96c5\u864eYQL\u548c\u65b0\u6d6a\u8d22\u7ecf\u3002\r\n* \u6839\u636e\u9009\u5b9a\u7684\u65e5\u671f\u8303\u56f4\u6293\u53d6\u6240\u6709\u6caa\u6df1\u4e24\u5e02\u80a1\u7968\u7684\u884c\u60c5\u6570\u636e\u3002\r\n* \u6839\u636e\u6307\u5b9a\u7684\u9009\u80a1\u7b56\u7565\u548c\u6307\u5b9a\u7684\u65e5\u671f\u8fdb\u884c\u9009\u80a1\u6d4b\u8bd5\u3002\r\n* \u8ba1\u7b97\u9009\u80a1\u6d4b\u8bd5\u5b9e\u9645\u7ed3\u679c\uff08\u5305\u62ec\u4e0e\u6caa\u6df1300\u6307\u6570\u6bd4\u8f83\uff09\u3002\r\n* \u4fdd\u5b58\u6570\u636e\u5230JSON\u6587\u4ef6\u3001CSV\u6587\u4ef6\u3002\r\n* \u652f\u6301\u4f7f\u7528\u8868\u8fbe\u5f0f\u5b9a\u4e49\u9009\u80a1\u7b56\u7565\u3002\r\n* \u652f\u6301\u591a\u7ebf\u7a0b\u5904\u7406\u3002\r\n\r\n\u80fd\u5e72\u4ec0\u4e48\r\n-------------\r\n\u5982\u679c\u4f60\u60f3\u57fa\u4e8e\u6caa\u6df1\u80a1\u5e02\u884c\u60c5\u6570\u636e\u8fdb\u884c\u4e00\u4e9b\u5de5\u4f5c\uff0c\u5b83\u53ef\u4ee5\u5e2e\u52a9\u4f60\u5bfc\u51fa\u6307\u5b9a\u65f6\u95f4\u8303\u56f4\u5185\u6240\u6709\u6caa\u6df1A\u80a1\u7684\u884c\u60c5\u6570\u636e\u548c\u4e00\u4e9b\u6280\u672f\u6307\u6807\uff0c\u5305\u62ec\u4ee3\u7801\u3001\u540d\u79f0\u3001\u5f00\u76d8\u3001\u6536\u76d8\u3001\u6700\u9ad8\u3001\u6700\u4f4e\u3001\u6210\u4ea4\u91cf\u3001\u5747\u7ebf\u3001KDJ\u7b49\u3002<br \\>\r\n\u5982\u679c\u4f60\u5bf9\u4e8e\u6280\u672f\u5206\u6790\u6709\u5174\u8da3\uff0c\u5b83\u53ef\u4ee5\u5e2e\u4f60\u6839\u636e\u4f60\u81ea\u5b9a\u4e49\u7684\u89c4\u5219\u5728\u6240\u6709\u6caa\u6df1A\u80a1\u7684\u8303\u56f4\u5185\u8fdb\u884c\u9009\u80a1\uff0c\u5e76\u56de\u6d4b\u9009\u80a1\u7b56\u7565\u7684\u6536\u76ca\u60c5\u51b5\uff08\u8be6\u7ec6\u8bf4\u660e\u540e\u9762\u4f1a\u6709\uff09\u3002\u8fd9\u6837\u5c31\u80fd\u591f\u975e\u5e38\u65b9\u4fbf\u5feb\u6377\u5730\u6d4b\u8bd5\u548c\u8c03\u6574\u57fa\u4e8e\u6280\u672f\u5206\u6790\u7684\u9009\u80a1\u7b56\u7565\u3002<br \\>\r\n\r\n\u8fd8\u6709\u4e9b\u4ec0\u4e48\u95ee\u9898\r\n-------------\r\n\u884c\u60c5\u6570\u636e\u76ee\u524d\u6765\u6e90\u4e8e\u96c5\u864eYQL\uff0c\u6bcf\u65e5\u6570\u636e\u7684\u66f4\u65b0\u65f6\u95f4\u4e0d\u592a\u7a33\u5b9a\uff08\u4e00\u822c\u5728\u4e2d\u56fd\u65f6\u95f4\u5348\u591c\u5de6\u53f3\uff09\u3002<br \\>\r\n\u76ee\u524d\u652f\u6301\u7684\u6280\u672f\u6307\u6807\u8fd8\u4e0d\u591a\uff0c\u8fd8\u6709\u4e00\u4e9b\u6307\u6807\u5982MACD\u548cBOLL\u540e\u7eed\u4f1a\u589e\u52a0\u3002<br \\>\r\n\u5728\u56de\u6d4b\u4e2d\uff0c\u5982\u679c\u6709\u5728\u9009\u5b9a\u65f6\u95f4\u5185\u53d1\u751f\u8fc7\u9664\u6743\u7684\u80a1\u7968\uff0c\u6536\u76ca\u8ba1\u7b97\u4f1a\u6709\u95ee\u9898\u3002<br \\>\r\n\u5bfc\u51fa\u683c\u5f0f\u76ee\u524d\u53ea\u652f\u6301CSV\u548cJSON\u6587\u672c\u3002MongoDB\u548cMySQL\u4f1a\u8003\u8651\u540e\u7eed\u52a0\u5165\u3002<br \\>\r\n\r\n\u73af\u5883\r\n-------------\r\nPython 3.4\u4ee5\u4e0a<br \\>\r\n[Requests](http://www.python-requests.org/en/latest/)<br \\>\r\n[PyMongo](http://api.mongodb.org/python/current/installation.html)<br \\>\r\nOSX\u548cCentOS\u5df2\u6d4b\u3002Windows\u5c1a\u672a\u6d4b\u8bd5\uff0c\u8f93\u51fa\u8def\u5f84\u53ef\u80fd\u6709\u95ee\u9898\u3002<br \\>\r\n\r\n```shell\r\npip install requests\r\npip install pymongo\r\n```\r\n\r\n\u4f7f\u7528\r\n-------------\r\n```shell\r\npython main.py [-h] [--reload {Y,N}] [--portfolio {Y,N}] \r\n               [--output {json,csv,all}] [--storepath PATH] [--thread NUM] \r\n               [--startdate yyyy-MM-dd] [--enddate yyyy-MM-dd] \r\n               [--targetdate yyyy-MM-dd] [--testrange NUM] [--testfile PATH]\r\n```\r\n\r\n\u53ef\u9009\u53c2\u6570\r\n-------------\r\n```shell\r\n  -h, --help                  \u67e5\u770b\u5e2e\u52a9\u5e76\u9000\u51fa\r\n  --reload {Y,N}              \u662f\u5426\u91cd\u65b0\u6293\u53d6\u80a1\u7968\u6570\u636e\uff0c\u9ed8\u8ba4\u503c\uff1aY\r\n  --portfolio {Y,N}           \u662f\u5426\u751f\u6210\u9009\u80a1\u6d4b\u8bd5\u7ed3\u679c\uff0c\u9ed8\u8ba4\u503c\uff1aN\r\n  --output {json,csv,all}     \u8f93\u51fa\u6587\u4ef6\u683c\u5f0f\uff0c\u9ed8\u8ba4\u503c\uff1ajson\r\n  --charset {utf-8,gbk}       \u8f93\u51fa\u6587\u4ef6\u7f16\u7801\uff0c\u9ed8\u8ba4\u503c\uff1autf-8\r\n  --storepath PATH            \u8f93\u51fa\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u503c\uff1a~/tmp/stockholm_export\r\n  --thread NUM                \u7ebf\u7a0b\u6570\uff0c\u9ed8\u8ba4\u503c\uff1a10\r\n  --startdate yyyy-MM-dd      \u6293\u53d6\u6570\u636e\u7684\u5f00\u59cb\u65e5\u671f\uff0c\u9ed8\u8ba4\u503c\uff1a\u5f53\u524d\u7cfb\u7edf\u65e5\u671f-100\u5929\uff08\u4f8b\u59822015-01-01\uff09\r\n  --enddate yyyy-MM-dd        \u6293\u53d6\u6570\u636e\u7684\u7ed3\u675f\u65e5\u671f\uff0c\u9ed8\u8ba4\u503c\uff1a\u5f53\u524d\u7cfb\u7edf\u65e5\u671f\r\n  --targetdate yyyy-MM-dd     \u6d4b\u8bd5\u9009\u80a1\u7b56\u7565\u7684\u76ee\u6807\u65e5\u671f\uff0c\u9ed8\u8ba4\u503c\uff1a\u5f53\u524d\u7cfb\u7edf\u65e5\u671f\r\n  --testrange NUM             \u6d4b\u8bd5\u65e5\u671f\u8303\u56f4\u5929\u6570\uff0c\u9ed8\u8ba4\u503c\uff1a50\r\n  --testfile PATH             \u6d4b\u8bd5\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4\u503c\uff1a./portfolio_test.txt\r\n```\r\n\r\n\u53ef\u7528\u6570\u636e/\u683c\u5f0f\r\n-------------\r\n### \u884c\u60c5\u6570\u636e:\r\n```shell\r\n[\r\n\t{\"Symbol\": \"600000.SS\", \r\n\t \"Name\": \"\u6d66\u53d1\u94f6\u884c\"\uff0c\r\n\t \"Data\": [\r\n\t\t\t\t {\"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}, \r\n\t\t\t\t {\"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}\r\n\t\t\t ]\r\n\t}\r\n]\r\n```\r\nDate(\u65e5\u671f); Open(\u5f00\u76d8\u4ef7); Close(\u6536\u76d8\u4ef7); High(\u5f53\u65e5\u6700\u9ad8); Low(\u5f53\u65e5\u6700\u4f4e); Change(\u4ef7\u683c\u53d8\u5316%); Volume(\u6210\u4ea4\u91cf); Vol_Change(\u6210\u4ea4\u91cf\u8f83\u524d\u65e5\u53d8\u5316); MA_5(5\u65e5\u5747\u7ebf); MA_10(10\u65e5\u5747\u7ebf); MA_20(20\u65e5\u5747\u7ebf); MA_30(30\u65e5\u5747\u7ebf); KDJ_K(KDJ\u6307\u6807K); KDJ_D(KDJ\u6307\u6807D); KDJ_J(KDJ\u6307\u6807J); <br \\>\r\n\u4ee5\u4e0a\u6570\u636e\u90fd\u53ef\u4ee5\u7528\u4e8e\u5236\u5b9a\u9009\u80a1\u7b56\u7565\uff0c\u540e\u9762\u4f1a\u4ecb\u7ecd\u5177\u4f53\u65b9\u6cd5\u3002<br \\>\r\n\r\n### \u9009\u80a1\u7b56\u7565\u6d4b\u8bd5\u6570\u636e:\r\n```shell\r\n[\r\n\t{\r\n\t\t\"Symbol\": \"600000.SS\", \r\n\t\t\"Name\": \"\u6d66\u53d1\u94f6\u884c\", \r\n\t\t\"Close\": 14.51, \r\n\t\t\"Change\": 0.06456,\r\n\t\t\"Vol_Change\": 2.39592, \r\n\t\t\"MA_10\": 14.171, \r\n\t\t\"KDJ_K\": 37.65, \r\n\t\t\"KDJ_D\": 33.427, \r\n\t\t\"KDJ_J\": 46.096, \r\n\t\t\"Data\": [\r\n\t\t\t\t\t{\"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}\r\n\t\t\t\t]\r\n\t}\r\n]\r\n```\r\nClose(\u6536\u76d8\u4ef7); Change(\u4ef7\u683c\u53d8\u5316%); Vol_Change(\u6210\u4ea4\u91cf\u8f83\u524d\u65e5\u53d8\u5316); MA_10(\u5341\u5929\u5747\u4ef7); KDJ_K(KDJ\u6307\u6807K); KDJ_D(KDJ\u6307\u6807D); KDJ_J(KDJ\u6307\u6807J); Day_1_Profit(\u540e\u4e00\u5929\u5229\u6da6\u7387%); Day_1_INDEX_Change(\u540e\u4e00\u5929\u6caa\u6df1300\u53d8\u5316\u7387%); Day_1_Differ(\u540e\u4e00\u5929\u76f8\u5bf9\u5229\u6da6\u7387%\u2014\u2014\u5373\u5229\u6da6\u7387-\u6caa\u6df1300\u53d8\u5316\u7387); Day_n_Profit(\u540en\u5929\u5229\u6da6\u7387%); Day_n_INDEX_Change(\u540en\u5929\u6caa\u6df1300\u53d8\u5316\u7387%); Day_n_Differ(\u540en\u5929\u76f8\u5bf9\u5229\u6da6\u7387%\u2014\u2014\u5373\u5229\u6da6\u7387-\u6caa\u6df1300\u53d8\u5316\u7387);\r\n\r\n\u884c\u60c5\u6570\u636e\u6293\u53d6\u8303\u4f8b\r\n-------------\r\n\u83b7\u53d6\u4ece\u5f53\u524d\u65e5\u671f\u5012\u63a8100\u5929(\u4e0d\u662f100\u4e2a\u4ea4\u6613\u65e5)\u7684\u6240\u6709\u6caa\u6df1\u80a1\u7968\u884c\u60c5\u6570\u636e\u3002<br />\r\n\u6267\u884c\u5b8c\u6210\u540e\uff0c\u6570\u636e\u5728\u5f53\u524d\u7528\u6237\u6587\u4ef6\u5939\u4e0b./tmp/stockholm_export/stockholm_export.json<br />\r\n```shell\r\npython main.py\r\n```\r\n\u5982\u679c\u60f3\u5bfc\u51facsv\u6587\u4ef6\r\n```shell\r\npython main.py --output=csv\r\n```\r\n\r\n\u9009\u80a1\u7b56\u7565\u6d4b\u8bd5\u8303\u4f8b\r\n-------------\r\n\u9009\u80a1\u7b56\u7565\u8303\u4f8b\u6587\u4ef6\u5185\u5bb9\u5982\u4e0b(\u5305\u62ec\u5728\u6e90\u7801\u4e2d)<br />\r\n\u9009\u80a1\u7b56\u7565\"method 1\"\u662f:\u524d\u524d\u4e2a\u4ea4\u6613\u65e5\u7684KDJ\u6307\u6807\u7684J\u503c\u5c0f\u4e8e20+\u524d\u4e2a\u4ea4\u6613\u65e5\u7684KDJ\u6307\u6807J\u503c\u5c0f\u4e8e20+\u5f53\u524d\u4ea4\u6613\u65e5\u7684KDJ\u6307\u6807J\u503c\u6bd4\u4e0a\u4e2a\u4ea4\u6613\u65e5\u592740+\u5f53\u524d\u4ea4\u6613\u65e5\u6210\u4ea4\u91cf\u53d8\u5316\u5927\u4e8e100%<br />\r\n```shell\r\n## Portfolio selection methodology sample file\r\n\r\n[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\r\n```\r\n\u4ee5\u5f53\u524d\u7cfb\u7edf\u65e5\u671f\u4e3a\u76ee\u6807\u65e5\u671f\u8fdb\u884c\u5012\u63a860\u5929\u5f97\u9009\u80a1\u7b56\u7565\u6d4b\u8bd5\u3002<br />\r\n\u4e0d\u91cd\u65b0\u6293\u53d6\u884c\u60c5\u6570\u636e\u5e76\u6267\u884c\u6d4b\u8bd5\u547d\u4ee4\u3002<br />\r\n\u6267\u884c\u5b8c\u6bd5\u540e\uff0c\u4f1a\u5c06\u6d4b\u8bd5\u7ed3\u679c\u6309\u7167\u6bcf\u5929\u4e00\u4e2a\u6587\u4ef6\u7684\u65b9\u5f0f\u4fdd\u5b58\u5728./tmp/stockholm_export/\u3002<br />\r\n\u6587\u4ef6\u540d\u683c\u5f0f\u4e3aresult_yyyy-MM-dd.json(\u4f8b\u5982result_2015-03-24.json)\u3002<br />\r\n```shell\r\npython main.py --reload=N --portfolio=Y\r\n```\r\n\u901a\u8fc7\u66f4\u6539\u6d4b\u8bd5\u6587\u4ef6\u4e2d\u7684\u9009\u80a1\u7b56\u7565\u516c\u5f0f\uff0c\u53ef\u4ee5\u968f\u610f\u6d4b\u8bd5\u6307\u5b9a\u65f6\u95f4\u8303\u56f4\u5185\u7684\u9009\u80a1\u6548\u679c\u3002<br />\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u4e00\u4e2a\u80a1\u7968\u6570\u636e\uff08\u6caa\u6df1\uff09\u722c\u866b\u548c\u9009\u80a1\u7b56\u7565\u6d4b\u8bd5\u6846\u67b6\uff0c\u6570\u636e\u57fa\u4e8e\u96c5\u864eYQL\u548c\u65b0\u6d6a\u8d22\u7ecf\u3002",
    "version": "1.2.1",
    "project_urls": {
        "Homepage": "https://github.com/yanjlee/stockholm"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc7fc98f31daa417a424be68a116a33996bc938f0f276bed9a03c62346033668",
                "md5": "b5e75432a9ed9f09e453347678e73050",
                "sha256": "bee52e0d556e8da14d43059820e3b29609b2b02cd5ffef631922b96933fb7b0f"
            },
            "downloads": -1,
            "filename": "stockholm_pro-1.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b5e75432a9ed9f09e453347678e73050",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 19006,
            "upload_time": "2024-06-01T08:28:51",
            "upload_time_iso_8601": "2024-06-01T08:28:51.221914Z",
            "url": "https://files.pythonhosted.org/packages/fc/7f/c98f31daa417a424be68a116a33996bc938f0f276bed9a03c62346033668/stockholm_pro-1.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0004a6e1121a6f9047fea1c5dd05435bd0effe411b26f39aa57e3fac8ca50d1a",
                "md5": "31c98eb38f9b578d9f55f7a64d1398b1",
                "sha256": "04ea2eede2e7cf1c38e036b90fd720d12d84e6a1c787c4e50d2113909050d1d7"
            },
            "downloads": -1,
            "filename": "stockholm_pro-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "31c98eb38f9b578d9f55f7a64d1398b1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 22365,
            "upload_time": "2024-06-01T08:28:53",
            "upload_time_iso_8601": "2024-06-01T08:28:53.343151Z",
            "url": "https://files.pythonhosted.org/packages/00/04/a6e1121a6f9047fea1c5dd05435bd0effe411b26f39aa57e3fac8ca50d1a/stockholm_pro-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-01 08:28:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yanjlee",
    "github_project": "stockholm",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "stockholm-pro"
}
        
Elapsed time: 0.52124s