Skip to article frontmatterSkip to article content

数据下载

获取回测和超参优化所需数据

要下载回测和超参优化所需的 K 线(OHLCV)数据,请使用 freqtrade download-data 命令。

如果未指定额外参数,freqtrade 会默认下载最近 30 天的 “1m” 和 “5m” 周期数据。 交易所和交易对将从 config.json 读取(如用 -c/--config 指定)。 未提供配置时,--exchange 参数为必填。

你可以用相对时间范围(如 --days 20)或绝对起始点(如 --timerange 20200101-)。增量下载建议用相对方式。

用法

用法: freqtrade download-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
                               [-c PATH] [-d PATH] [--userdir PATH]
                               [-p PAIRS [PAIRS ...]] [--pairs-file FILE]
                               [--days INT] [--new-pairs-days INT]
                               [--include-inactive-pairs]
                               [--timerange TIMERANGE] [--dl-trades]
                               [--convert] [--exchange EXCHANGE]
                               [-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
                               [--data-format-ohlcv {json,jsongz,feather,parquet}]
                               [--data-format-trades {json,jsongz,feather,parquet}]
                               [--trading-mode {spot,margin,futures}]
                               [--prepend]

选项:
  -h, --help            显示帮助信息并退出
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令仅用于这些交易对。交易对之间用空格分隔。
  --pairs-file FILE     包含交易对列表的文件。优先于 --pairs 或配置文件中的 pairs。
  --days INT            下载指定天数的数据。
  --new-pairs-days INT  为新交易对下载指定天数的数据。
                        默认:`None`。
  --include-inactive-pairs
                        也下载非活跃交易对的数据。
  --timerange TIMERANGE
                        指定要使用的数据时间范围。
  --dl-trades           下载成交单数据而不是 OHLCV 数据。
  --convert             将下载的成交单数据转换为 OHLCV 数据。仅在与 `--dl-trades` 结合使用时适用。
                        对于没有历史 OHLCV 的交易所(如 Kraken)会自动转换。
                        如果未提供此参数,请使用 `trades-to-ohlcv` 命令手动转换。
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的行情数据。空格分隔的列表。
                        默认:`1m 5m`。
  --erase               清除所选交易所/交易对/时间框架的所有现有数据。
  --data-format-ohlcv {json,jsongz,feather,parquet}
                        下载的K线(OHLCV)数据的存储格式。
                        (默认:`feather`)。
  --data-format-trades {json,jsongz,feather,parquet}
                        下载的成交单数据的存储格式。(默认:`feather`)。
  --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
                        选择交易模式。
  --prepend             允许数据前置。(数据追加被禁用)

通用参数:
  -v, --verbose         详细模式(-vv 获取更多信息,-vvv 获取所有消息)。
  --no-color            禁用超参数优化结果的着色。在将输出重定向到文件时可能有用。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值包括:
                        'syslog', 'journald'。有关更多详细信息,请参阅文档。
  -V, --version         显示程序版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认:`userdir/config.json` 或 `config.json`,以存在的为准)。
                        可以使用多个 --config 选项。可以设置为 `-` 以从标准输入读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        交易所历史回测数据的基本目录路径。要查看期货数据,需要额外使用 trading-mode。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。

开始下载

最简单的命令(假设有 config.json):

freqtrade download-data --exchange binance

这会为配置文件中定义的所有交易对下载历史K线(OHLCV)数据。

也可直接指定交易对:

freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT

或用正则(如下载所有 USDT 对):

freqtrade download-data --exchange binance --pairs ".*/USDT"

其他说明

下载当前区间前的更多数据

假设你已用 --timerange 20220101- 下载了 2022 年全部数据,现在想补充更早的数据。 可用 --prepend 配合 --timerange(指定结束日期)实现:

freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT --prepend --timerange 20210101-20220101

数据格式

Freqtrade 目前支持以下数据格式:

默认情况下,OHLCV 和成交数据都用 feather 格式存储。

可通过命令行参数 --data-format-ohlcv--data-format-trades 更改。 如需永久生效,建议在配置文件中添加:

    // ...
    "dataformat_ohlcv": "feather",
    "dataformat_trades": "feather",
    // ...

如下载时更改了默认格式,配置文件中的 dataformat_ohlcvdataformat_trades 也需同步修改。

数据格式对比

以下对比基于如下数据,使用 linux time 命令:

Found 6 pair / timeframe combinations.
+----------+-------------+--------+---------------------+---------------------+
|     Pair |   Timeframe |   Type |                From |                  To |
|----------+-------------+--------+---------------------+---------------------|
| BTC/USDT |          5m |   spot | 2017-08-17 04:00:00 | 2022-09-13 19:25:00 |
| ETH/USDT |          1m |   spot | 2017-08-17 04:00:00 | 2022-09-13 19:26:00 |
| BTC/USDT |          1m |   spot | 2017-08-17 04:00:00 | 2022-09-13 19:30:00 |
| XRP/USDT |          5m |   spot | 2018-05-04 08:10:00 | 2022-09-13 19:15:00 |
| XRP/USDT |          1m |   spot | 2018-05-04 08:11:00 | 2022-09-13 19:22:00 |
| ETH/USDT |          5m |   spot | 2017-08-17 04:00:00 | 2022-09-13 19:20:00 |
+----------+-------------+--------+---------------------+---------------------+

用如下命令测试读取速度:

time freqtrade list-data --show-timerange --data-format-ohlcv <dataformat>
格式大小读取时间
feather72Mb3.5s
json149Mb25.6s
jsongz39Mb27s
parquet83Mb3.8s

大小为上述 BTC/USDT 1m spot 区间。

推荐用默认 feather 或 parquet 格式,兼顾性能和体积。

交易对文件

除了 config.json 的白名单,也可用 pairs.json 文件。 如用 Binance:

mkdir -p user_data/data/binance
touch user_data/data/binance/pairs.json

pairs.json 格式为简单 json 列表。 可混用不同计价货币,仅用于下载。

[
    "ETH/BTC",
    "ETH/USDT",
    "BTC/USDT",
    "XRP/ETH"
]

子命令 convert data

用法: freqtrade convert-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
                              [-c PATH] [-d PATH] [--userdir PATH]
                              [-p PAIRS [PAIRS ...]] --format-from
                              {json,jsongz,feather,parquet} --format-to
                              {json,jsongz,feather,parquet} [--erase]
                              [--exchange EXCHANGE]
                              [-t TIMEFRAMES [TIMEFRAMES ...]]
                              [--trading-mode {spot,margin,futures}]
                              [--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]

选项:
  -h, --help            显示帮助信息并退出
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令仅用于这些交易对。交易对之间用空格分隔。
  --format-from {json,jsongz,feather,parquet}
                        数据转换的源格式。
  --format-to {json,jsongz,feather,parquet}
                        数据转换的目标格式。
  --erase               清除所选交易所/交易对/时间框架的所有现有数据。
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的行情数据。空格分隔的列表。
                        默认:`1m 5m`。
  --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
                        选择交易模式。
  --candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
                        选择要转换的K线类型。默认为所有可用类型。

Common arguments:
  -v, --verbose         详细模式(-vv 获取更多信息,-vvv 获取所有消息)。
  --no-color            禁用超参数优化结果的着色。在将输出重定向到文件时可能有用。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值包括:
                        'syslog', 'journald'。有关更多详细信息,请参阅文档。
  -V, --version         显示程序版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认:`userdir/config.json` 或 `config.json`,以存在的为准)。
                        可以使用多个 --config 选项。可以设置为 `-` 以从标准输入读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        交易所历史回测数据的基本目录路径。要查看期货数据,需要额外使用 trading-mode。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。

数据格式转换示例

如下命令会将 ~/.freqtrade/data/binance 下所有K线(OHLCV)数据从 json 转为 jsongz,并删除原 json 文件(--erase 参数):

freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtrade/data/binance -t 5m 15m --erase

子命令 convert trade data

用法: freqtrade convert-trade-data [-h] [-v] [--no-color] [--logfile FILE]
                                    [-V] [-c PATH] [-d PATH] [--userdir PATH]
                                    [-p PAIRS [PAIRS ...]] --format-from
                                    {json,jsongz,feather,parquet,kraken_csv}
                                    --format-to {json,jsongz,feather,parquet}
                                    [--erase] [--exchange EXCHANGE]

选项:
  -h, --help            显示帮助信息并退出
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令仅用于这些交易对。交易对之间用空格分隔。
  --format-from {json,jsongz,feather,parquet,kraken_csv}
                        数据转换的源格式。
  --format-to {json,jsongz,feather,parquet}
                        数据转换的目标格式。
  --erase               清除所选交易所/交易对/时间框架的所有现有数据。
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。

通用参数:
  -v, --verbose         详细模式(-vv 获取更多信息,-vvv 获取所有消息)。
  --no-color            禁用超参数优化结果的着色。在将输出重定向到文件时可能有用。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值包括:
                        'syslog', 'journald'。有关更多详细信息,请参阅文档。
  -V, --version         显示程序版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认:`userdir/config.json` 或 `config.json`,以存在的为准)。
                        可以使用多个 --config 选项。可以设置为 `-` 以从标准输入读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        交易所历史回测数据的基本目录路径。要查看期货数据,需要额外使用 trading-mode。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。

成交数据转换示例

如下命令会将 ~/.freqtrade/data/kraken 下所有成交数据从 jsongz 转为 json,并删除原 jsongz 文件(--erase 参数):

freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase

子命令 trades to ohlcv

如需用 --dl-trades(仅 kraken)下载数据,最后一步需将成交数据转为K线数据。 本命令可让你为更多周期重复此步骤,无需重新下载。

用法: freqtrade trades-to-ohlcv [-h] [-v] [--no-color] [--logfile FILE] [-V]
                                 [-c PATH] [-d PATH] [--userdir PATH]
                                 [-p PAIRS [PAIRS ...]]
                                 [-t TIMEFRAMES [TIMEFRAMES ...]]
                                 [--exchange EXCHANGE]
                                 [--data-format-ohlcv {json,jsongz,feather,parquet}]
                                 [--data-format-trades {json,jsongz,feather,parquet}]
                                 [--trading-mode {spot,margin,futures}]

选项:
  -h, --help            显示帮助信息并退出。
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限定命令仅针对这些交易对。以空格分隔。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的 K 线周期。以空格分隔的列表。默认:`1m 5m`。
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。
  --data-format-ohlcv {json,jsongz,feather,parquet}
                        下载的 K 线(OHLCV)数据的存储格式。(默认:`feather`)。
  --data-format-trades {json,jsongz,feather,parquet}
                        下载的成交数据的存储格式。(默认:`feather`)。
  --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
                        选择交易模式。

通用参数:
  -v, --verbose         详细模式(-vv 获取更多信息,-vvv 获取所有消息)。
  --no-color            禁用超参数优化结果的着色。在将输出重定向到文件时可能有用。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值包括:'syslog', 'journald'。有关更多详细信息,请参阅文档。
  -V, --version         显示程序版本号并退出。
  -c PATH, --config PATH
                        指定配置文件(默认:`userdir/config.json` 或 `config.json`,以存在的为准)。可以使用多个 --config 选项。可以设置为 `-` 以从标准输入读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        交易所历史回测数据的基本目录路径。要查看期货数据,需要额外使用 trading-mode。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。

trade-to-ohlcv 转换示例

freqtrade trades-to-ohlcv --exchange kraken -t 5m 1h 1d --pairs BTC/EUR ETH/EUR

子命令 list-data

可用 list-data 子命令查看已下载数据。

用法: freqtrade list-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
                           [-c PATH] [-d PATH] [--userdir PATH]
                           [--exchange EXCHANGE]
                           [--data-format-ohlcv {json,jsongz,feather,parquet}]
                           [--data-format-trades {json,jsongz,feather,parquet}]
                           [--trades] [-p PAIRS [PAIRS ...]]
                           [--trading-mode {spot,margin,futures}]
                           [--show-timerange]

选项:
  -h, --help            显示帮助信息并退出
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。
  --data-format-ohlcv {json,jsongz,feather,parquet}
                        下载的K线(OHLCV)数据的存储格式。
                        (默认:`feather`)。
  --data-format-trades {json,jsongz,feather,parquet}
                        下载的成交单数据的存储格式。(默认:`feather`)。
  --trades              针对成交单数据而非 OHLCV 数据进行操作。
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令仅用于这些交易对。交易对之间用空格分隔。
  --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
                        选择交易模式。
  --show-timerange      显示可用数据的时间范围(可能需要较长时间计算)。

通用参数:
  -v, --verbose         详细模式(-vv 获取更多信息,-vvv 获取所有消息)。
  --no-color            禁用超参数优化结果的着色。在将输出重定向到文件时可能有用。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值包括:
                        'syslog', 'journald'。有关更多详细信息,请参阅文档。
  -V, --version         显示程序版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认:`userdir/config.json` 或 `config.json`,以存在的为准)。
                        可以使用多个 --config 选项。可以设置为 `-` 以从标准输入读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        交易所历史回测数据的基本目录路径。要查看期货数据,需要额外使用 trading-mode。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。

list-data 示例

> freqtrade list-data --userdir ~/.freqtrade/user_data/

              Found 33 pair / timeframe combinations.
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
┃          Pair ┃                                 Timeframe ┃ Type ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
│       ADA/BTC │     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
│       ADA/ETH │     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
│       ETH/BTC │     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
│      ETH/USDT │                  5m, 15m, 30m, 1h, 2h, 4h │ spot │
└───────────────┴───────────────────────────────────────────┴──────┘

显示所有成交数据及时间区间:

> freqtrade list-data --show --trades
                     Found trades data for 1 pair.                     
┏━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃    Pair ┃ Type ┃                From ┃                  To ┃ Trades ┃
┡━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│ XRP/ETH │ spot │ 2019-10-11 00:00:11 │ 2019-10-13 11:19:28 │  12477 │
└─────────┴──────┴─────────────────────┴─────────────────────┴────────┘

成交(tick)数据

默认情况下,download-data 子命令下载 K 线(OHLCV)数据。大多数交易所也支持通过 API 下载历史成交数据。 如需多个周期,成交数据只需下载一次,后续可本地重采样。

因数据量大,默认用 feather 格式存储,文件名为 <pair>-trades.feather(如 ETH_BTC-trades.feather)。支持增量模式,如每周用 --days 8 下载一次即可。

如需此模式,只需加 --dl-trades。此时会切换为下载成交数据。 如加 --convert,则会自动重采样并覆盖已有 OHLCV 数据。

示例:

freqtrade download-data --exchange kraken --pairs XRP/EUR ETH/EUR --days 20 --dl-trades

下一步

恭喜,你已下载好数据,可以开始回测你的策略了。