docs.rs failed to build rustdx-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
rustdx-0.4.2
rustdx
受 pytdx 启发的 A 股数据获取工具,包含:
- 一个 Rust 通用库 rustdx;
- 一个命令行工具 rustdx-cmd。
命令行工具(统计数据基于笔者的单核 CPU Ubuntu 系统 release build,以实际速度为准):
- 解析所有最新股票列表的历史 A 股数据(包含复权数据)不到 30s ,解析后的 csv 大小 1G 多;
- 将解析后的 csv 数据插入到 ClickHouse (20s,表 268 M) 或 MongoDB (7 分钟,表超过 700 M);
- 东财日线增量更新(包括复权),2s 更新完。
关于复权:
- 使用涨跌幅复权算法,无需修改(重算)历史复权信息;
- 只计算收盘价前复权,其他价格复权只需基于收盘价和相对价格即可计算出来(这在 ClickHouse 中很快)。
具体文档待补充。
rustdx-cmd
安装
使用以下一种方式即可:
-
cargo install:
$ CARGO_PROFILE_RELEASE_LTO=yes CARGO_PROFILE_RELEASE_OPT_LEVEL=3 cargo install rustdx-cmd
- cargo build:
$ git clone https://github.com/zjp-CN/rustdx.git
$ cd rustdx
$ cargo build -p rustdx-cmd --release
子命令
- day:解析通达信 day 文件,具体查看帮助
rustdx day --help
、rustdx day -h o -h l
。 - east:获取东方财富当日 A 股数据,具体查看帮助
rustdx east --help
。
完整使用例子
准备好 day 文件、gbbq 文件和 ClickHouse 数据库:
p.s. 请勿使用本项目 assets/
中的 gbbq 文件,因为那对你来说是过时的。
注意:
此工具的主要目的就是快速补齐历史日线数据,但没有校验交易日数据连续或者清空数据库的功能。
因没有每天记录日线导致日线不完整(或者其他原因导致数据有问题),请重新解析和存储所有历史数据。
重新存储数据之前,使用以下 sql 命令(以 ClickHouse 为例)删除历史数据:
TRUNCATE TABLE rustdx.factor;
如果发现历史数据不正确,请提交 issue。
# 解析所有最新股票的历史日线数据,且计算复权数据
$ rustdx day /vdb/tmp/tdx/sh/ /vdb/tmp/tdx/sz/ -l official -g ../assets/gbbq -t rustdx.factor
# 写入 ClickHouse 数据库
$ clickhouse-client --query "INSERT INTO rustdx.factor FORMAT CSVWithNames" < stocks.csv
# 有了历史日线数据之后,每个交易日收盘之后,更新当天数据
$ rustdx east -p factor.csv -t rustdx.factor
# 写入 ClickHouse 数据库
$ clickhouse-client --query "INSERT INTO rustdx.factor FORMAT CSVWithNames" < eastmoney.csv
其中 factor.csv 来自数据库中,前一天的复权数据,ClickHouse 的导出命令:
SELECT
yesterday AS date,
code,
last_value(close) AS close,
last_value(factor) AS factor
FROM rustdx.factor
GROUP BY code
INTO OUTFILE 'factor.csv'
FORMAT CSVWithNames;
或者:
# 解析所有最新股票的历史日线数据,且计算复权数据,写入 ClickHouse 数据库
$ rustdx day /vdb/tmp/tdx/sh/ /vdb/tmp/tdx/sz/ -l official -g ../assets/gbbq -o clickhouse -t rustdx.factor
# 有了历史日线数据之后,每个交易日收盘之后,更新当天数据
$ rustdx east -p clickhouse -o clickhouse -t rustdx.factor