获取回测和超参优化所需数据¶
要下载回测和超参优化所需的 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"
其他说明¶
- 如需用非默认目录,添加
--datadir user_data/data/some_directory
。 - 如需更换下载数据的交易所,用
--exchange <exchange>
或指定不同配置文件。 - 如需用其他目录下的 pairs.json,用
--pairs-file some_other_dir/pairs.json
。 - 只下载 10 天历史K线,用
--days 10
(默认 30 天)。 - 从固定起点下载历史K线,用
--timerange 20200101-
,即从 2020-01-01 起下载全部数据。 - 如已有部分数据,起点会被忽略,仅补齐缺失部分。
- 用
--timeframes
指定下载哪些周期的K线,默认--timeframes 1m 5m
。 - 用
-c/--config
可用配置文件中定义的交易所、周期和交易对。此时用 config 中的白名单作为下载对列表,无需 pairs.json。可与大多数其他参数组合。
下载当前区间前的更多数据¶
假设你已用 --timerange 20220101-
下载了 2022 年全部数据,现在想补充更早的数据。
可用 --prepend
配合 --timerange
(指定结束日期)实现:
freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT --prepend --timerange 20210101-20220101
数据格式¶
Freqtrade 目前支持以下数据格式:
feather
- 基于 Apache Arrow 的数据格式json
- 纯文本 json 文件jsongz
- gzip 压缩的 json 文件parquet
- 列式存储(仅 OHLCV)
默认情况下,OHLCV 和成交数据都用 feather
格式存储。
可通过命令行参数 --data-format-ohlcv
和 --data-format-trades
更改。
如需永久生效,建议在配置文件中添加:
// ...
"dataformat_ohlcv": "feather",
"dataformat_trades": "feather",
// ...
如下载时更改了默认格式,配置文件中的 dataformat_ohlcv
和 dataformat_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>
格式 | 大小 | 读取时间 |
---|---|---|
feather | 72Mb | 3.5s |
json | 149Mb | 25.6s |
jsongz | 39Mb | 27s |
parquet | 83Mb | 3.8s |
大小为上述 BTC/USDT 1m spot 区间。
推荐用默认 feather 或 parquet 格式,兼顾性能和体积。
交易对文件¶
除了 config.json
的白名单,也可用 pairs.json
文件。
如用 Binance:
- 创建目录
user_data/data/binance
,将pairs.json
放入该目录 - 编辑
pairs.json
,写入你关注的交易对
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
下一步¶
恭喜,你已下载好数据,可以开始回测你的策略了。