Coder Social home page Coder Social logo

rustdx's Introduction

rustdx

github github crates.io docs.rs crates.io build status

pytdx 启发的 A 股数据获取工具,包含:

  1. 一个 Rust 通用库 rustdx
  2. 一个命令行工具 rustdx-cmd

命令行工具(统计数据基于笔者的单核 CPU Ubuntu 系统 release build,以实际速度为准):

  1. 解析所有最新股票列表的历史 A 股数据(包含复权数据)不到 30s ,解析后的 csv 大小 1G 多;
  2. 将解析后的 csv 数据插入到 ClickHouse (20s,表 268 M) 或 MongoDB (7 分钟,表超过 700 M);
  3. 东财日线增量更新(包括复权),2s 更新完。

关于复权:

  1. 使用涨跌幅复权算法,无需修改(重算)历史复权信息;
  2. 只计算收盘价前复权,其他价格复权只需基于收盘价和相对价格即可计算出来(这在 ClickHouse 中很快)。

具体文档待补充。

rustdx-cmd

安装

使用以下一种方式即可:

  1. 下载 已编译的 release 版本

  2. cargo install:

$ CARGO_PROFILE_RELEASE_LTO=yes CARGO_PROFILE_RELEASE_OPT_LEVEL=3 cargo install rustdx-cmd
  1. cargo build:
$ git clone https://github.com/zjp-CN/rustdx.git
$ cd rustdx
$ cargo build -p rustdx-cmd --release

子命令

  • day:解析通达信 day 文件,具体查看帮助 rustdx day --helprustdx 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

CHANGELOG

更新记录

rustdx's People

Contributors

zjp-cn avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.