## 历史行情下载

---

### [B站视频教程](https://space.bilibili.com/384267873)

**下载历史行情数据，用于策略回测。**

历史行情下载，基于已经实现的交易所市场API，获取历史行情，通过 `ExchangeDB` 类的 `insert_klines` 方法写入数据库。


### 沪深A股历史行情下载

> 最新版的掘金只支持 90 天的分钟数据下载

* Baostock数据下载脚本文件：`script/crontab/reboot_sync_a_klines.py`
* 掘金数据下载脚本文件：`script/crontab/reboot_sync_gm_a_klines.py`

> run_codes 可定义要下载的标的
>
> f_start_datetime 定义各个周期最早的开始时间

如无必要，不建议下载全市场历史行情数据，数据又慢又大，建议只下载需要标的周期的历史行情数据。

建议使用 后复权 数据，可每日执行，追加最新数据，不用考虑复权情况。

_注意：Baostock 服务，股票的最小周期是 5m，无指标的分钟数据。_

### 港股历史行情下载

* 富途数据下载脚本文件：`script/crontab/reboot_sync_hk_klines.py`

使用的是富途的API，注意有标的数量限制，酌情使用。

### 期货历史行情下载

> 最新版的掘金只支持 90 天的分钟数据下载

* 天勤数据下载脚本文件：`script/crontab/reboot_sync_futures_klines.py`
* 掘金期货数据下载脚本文件：`script/crontab/reboot_sync_gm_futures_klines.py`

天勤API，需要专业版才可获取历史行情，可申请免费 15 天试用，在15天试用期内，将所需要的期货历史行情，下载在本地数据库，以便用于后续的策略回测中。

### 数字货币历史行情下载

* 币安数据下载脚本文件：`script/crontab/reboot_sync_currency_klines.py`

使用 Binance USDT 永续合约 API，获取所有标的的历史行情数据。

_注意：ExchangeBinance 类，在调用 klines 方法有使用 DB 中已下载的数据，并会将最新的写入数据库_

_如之前没有下载过历史行情，并在WEB请求过数字货币行情，在执行历史下载，因为最后更新时间是最新的，则不会下载并保存该标的的历史行情_

_解决办法就是清空相关的表，再执行历史行情下载，并**设置定时任务，每日执行下载历史行情数据**_

### QQ群下载并导入历史行情数据

通过QQ群文件，下载历史行情数据，用于本地回测

#### VNPY 行情数据下载

使用 VNPY 进行回测所依赖的历史行情数据；包括 部分股票与期货合约数据

* 文件名称：`vnpy_mysql_data.zip`

使用方法，创建 vnpy 数据库，解压文件并导入（如之前有数据会删除原有数据）

    股票
    2019年1月1日 1分钟数据
    '000001', '000858', '002603', '000002', '002594'

    期货
    2019年1月1日 1分钟数据
    'ag2206', 'al2205', 'au2206', 'bu2206', 'cu2205', 'fu2209', 'hc2210', 'ni2205', 'pb2205', 'rb2210'

#### 数字货币部分行情

数据包括 BTC/USDT、EOS/USDT、ETC/USDT、ETH/USDT

* 文件名称：`chanlun_currency_data.zip`

  包含的周期：'w', 'd', '4h', '60m', '30m', '15m', '5m', '1m'

#### 期货部分行情

文件名：`chanlun_futures_data.zip`

数据包括以下合约：

    'CFFEX.TS2206', 'SHFE.rb2206', 'CFFEX.IF2205', 'CFFEX.TF2206', 'INE.nr2205', 
    'DCE.fb2206', 'DCE.jd2206', 'DCE.b2205', 'DCE.eb2206', 'DCE.lh2205', 'DCE.m2205', 
    'DCE.a2205', 'DCE.jm2205', 'SHFE.cu2206', 'CFFEX.T2206', 'SHFE.wr2205', 'DCE.l2205', 
    'SHFE.ru2205', 'SHFE.al2205', 'DCE.pp2205', 'DCE.l2206', 'INE.lu2206', 'INE.lu2205', 
    'INE.bc2205', 'SHFE.au2205', 'INE.sc2205', 'CFFEX.IC2206', 'SHFE.ni2206', 'INE.sc2206', 
    'SHFE.ss2206', 'DCE.p2205', 'DCE.j2206', 'DCE.eg2205', 'SHFE.bu2206', 'SHFE.ru2206', 
    'DCE.pg2206', 'DCE.y2205', 'DCE.v2205', 'DCE.j2205', 'DCE.jm2206', 'CFFEX.IH2205', 
    'SHFE.ag2205', 'DCE.jd2205', 'DCE.p2206', 'SHFE.pb2206', 'SHFE.bu2205', 'DCE.eg2206', 
    'SHFE.pb2205', 'SHFE.hc2206', 'SHFE.ag2206', 'SHFE.ss2205', 'SHFE.ni2205', 'SHFE.sn2205', 
    'DCE.i2206', 'SHFE.zn2205', 'DCE.cs2205', 'SHFE.au2206', 'SHFE.sp2206', 'CFFEX.IC2205', 
    'SHFE.fu2205', 'SHFE.al2206', 'SHFE.wr2206', 'DCE.bb2205', 'SHFE.sp2205', 'DCE.pg2205', 
    'DCE.v2206', 'DCE.rr2206', 'DCE.rr2205', 'DCE.b2206', 'SHFE.zn2206', 'SHFE.fu2206', 
    'INE.nr2206', 'CFFEX.IH2206', 'SHFE.cu2205', 'INE.bc2206', 'DCE.fb2205', 'SHFE.rb2205', 
    'DCE.pp2206', 'SHFE.sn2206', 'DCE.eb2205', 'DCE.c2205', 'SHFE.hc2205', 'DCE.bb2206', 
    'DCE.i2205', 'CFFEX.IF2206', 'KQ.m@DCE.rr', 'KQ.m@DCE.p', 'KQ.m@CZCE.WH', 'KQ.m@CZCE.PM', 
    'KQ.m@INE.sc', 'KQ.m@SHFE.hc', 'KQ.m@SHFE.sn', 'KQ.m@CZCE.RI', 'KQ.m@CZCE.UR', 'KQ.m@SHFE.ni', 
    'KQ.m@DCE.i', 'KQ.m@CZCE.PK', 'KQ.m@CZCE.RS', 'KQ.m@INE.nr', 'KQ.m@DCE.v', 'KQ.m@SHFE.rb', 
    'KQ.m@DCE.eb', 'KQ.m@INE.lu', 'KQ.m@DCE.pg', 'KQ.m@DCE.cs', 'KQ.m@CFFEX.IH', 'KQ.m@DCE.bb', 
    'KQ.m@DCE.fb', 'KQ.m@CFFEX.TF', 'KQ.m@DCE.c', 'KQ.m@SHFE.zn', 'KQ.m@DCE.lh', 'KQ.m@SHFE.fu', 
    'KQ.m@CZCE.ZC', 'KQ.m@SHFE.ss', 'KQ.m@CZCE.JR', 'KQ.m@SHFE.sp', 'KQ.m@CFFEX.T', 'KQ.m@CZCE.SM', 
    'KQ.m@CZCE.SA', 'KQ.m@SHFE.al', 'KQ.m@SHFE.au', 'KQ.m@CFFEX.IC', 'KQ.m@SHFE.pb', 'KQ.m@DCE.b', 
    'KQ.m@CZCE.RM', 'KQ.m@DCE.jd', 'KQ.m@CZCE.OI', 'KQ.m@SHFE.bu', 'KQ.m@DCE.m', 'KQ.m@CZCE.FG', 
    'KQ.m@CZCE.PF', 'KQ.m@INE.bc', 'KQ.m@SHFE.ag', 'KQ.m@DCE.l', 'KQ.m@DCE.y', 'KQ.m@CZCE.TA', 
    'KQ.m@CZCE.CY', 'KQ.m@CZCE.AP', 'KQ.m@CFFEX.IF', 'KQ.m@CZCE.SF', 'KQ.m@SHFE.cu', 'KQ.m@CZCE.CJ', 
    'KQ.m@CZCE.CF', 'KQ.m@DCE.a', 'KQ.m@CZCE.LR', 'KQ.m@DCE.pp', 'KQ.m@DCE.j', 'KQ.m@CFFEX.TS', 
    'KQ.m@DCE.eg', 'KQ.m@DCE.jm', 'KQ.m@CZCE.MA', 'KQ.m@CZCE.SR', 'KQ.m@SHFE.ru', 'KQ.m@SHFE.wr'

    包含的周期以及数据对应的时间段：
    'w': {'start': '2000-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    'd': {'start': '2000-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    '60m': {'start': '2000-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    '30m': {'start': '2000-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    '15m': {'start': '2000-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    '5m': {'start': '2015-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},
    '1m': {'start': '2018-01-01 00:00:00', 'end': '2022-04-14 00:00:00'},