Skip to content

数据下载

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

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

如果未指定附加参数,则freqtrade将在最近的30天内下载“1m”和“5m”时间间隔的数据。 交易所和交易对将来自config.json(如果使用-c/--config指定)。 如果没有提供配置,--exchange变得强制性。

您可以使用相对时间范围(--days 20)或绝对起始点(--timerange 20200101-)来进行增量下载。

提示:更新现有数据

如果您已经有可用于回测的数据存在于数据目录中,并且想要将这些数据刷新到今天,freqtrade将自动计算现有交易对缺失的数据,并且下载将从最新可用的点开始直到“现在”,不需要使用--days或者--timerange参数。Freqtrade将保留现有数据并且仅下载缺失的数据。 如果您在插入新的交易对后更新现有数据但没有为其数据,请使用--new-pairs-days xx参数。将为新的交易对下载指定数量的天数,而旧的交易对将只更新缺失的数据。 如果您单独使用--days xx参数,则会为_所有_交易对下载指定天数的数据。请注意,如果指定的天数小于现在和上次下载蜡烛图之间的间隔,freqtrade将删除所有现有数据,以避免蜡烛图数据中的间隙。

用法

用法:freqtrade download-data [-h] [-v] [--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]
                             [--exchange EXCHANGE]
                             [-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
                             [--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
                             [--data-format-trades {json,jsongz,hdf5,feather}]
                             [--trading-mode {spot,margin,futures}]
                             [--prepend]

选项:
  -h, --help            显示此帮助消息并退出
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令到这些交易对。交易对为空格分隔。
  --pairs-file FILE     包含交易对列表的文件。优先于--pairs和配置中配置的交易对。
  --days INT            下载指定天数的数据。
  --new-pairs-days INT  下载给定数量的新交易对的数据天数。默认值:`None`。
  --include-inactive-pairs
                        也下载非活跃交易对的数据。
  --timerange TIMERANGE
                        指定要使用的数据时间范围。
  --dl-trades           下载交易数据而不是蜡烛图(OHLCV)数据。机器人将将交易重新采样到指定的时间间隔,如--timeframes/-t中指定的那样。
  --exchange EXCHANGE   交易所名称。仅在没有提供配置时有效。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的时间间隔。空格分隔的列表。默认值:`1m 5m`。
  --erase               清除所选交易所/交易对/时间间隔的所有现有数据。
  --data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
                        下载的蜡烛图(OHLCV)数据的存储格式。 (默认值:`feather`)。
  --data-format-trades {json,jsongz,hdf5,feather}
                        下载的交易数据的存储格式。 (默认值:`feather`)。
  --trading-mode {spot,margin,futures}
                        选择交易模式
  --prepend             允许数据前置。 (禁用数据附加)

常用参数:
  -v, --verbose         详细模式(-vv获取更多信息,-vvv获取所有消息)。
  --logfile FILE, --log-file FILE
                        记录到指定的文件中。特殊值为:’syslog’,’journald’。有关更多详细信息,请参见文档。
  -V, --version         显示程序的版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认值:‘userdir/config.json’或‘config.json’,以存在的为准)。可以使用多个--config选项。可以设置为“-”以从stdin读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        具有历史回测数据的目录路径。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录的路径。```

下载特定计价货币的所有数据

通常情况下,您可能希望下载特定计价货币的所有交易对的数据。在这种情况下,您可以使用以下快捷方式: freqtrade download-data --exchange binance --pairs .*/USDT <...>。提供的 "pairs" 字符串将被扩展为包含交易所上的所有活跃交易对。 要同时下载禁用(下架)交易对的数据,请在命令中添加 --include-inactive-pairs

启动期

download-data 是一个与策略无关的命令。其想法是每次下载一大块数据,并逐步增加存储的数据量。

出于这个原因,download-data 不关心策略中定义的 "startup-period"。用户可以下载额外的日期,如果回测应该从特定时间点开始(同时尊重启动期)。

开始下载

一个非常简单的命令(假设存在一个 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
  • 要更改用于下载历史数据的交易所,请使用不同的配置文件(您可能需要调整速率限制等)。
  • 要使用某个其他目录中的 pairs.json,请使用 --pairs-file some_other_dir/pairs.json
  • 要仅下载过去10天的历史K线数据,使用 --days 10(默认为30天)。
  • 要从固定的起始点下载历史K线数据,请使用 --timerange 20200101- - 这将下载从2020年1月1日开始的所有数据。
  • 使用 --timeframes 指定要下载历史K线数据的时间框架。默认为 --timeframes 1m 5m,将下载1分钟和5分钟数据。
  • 要使用在配置文件中定义的交易所、时间框架和货币对列表,使用 -c/--config 选项。使用此选项,脚本将使用配置中定义的白名单作为要下载数据的货币对列表,并且不需要 pairs.json 文件。您可以将 -c/--config 与大多数其他选项组合使用。
权限被拒绝错误

如果您的配置目录 user_data 是由docker创建的,则可能会出现以下错误:

cp: cannot create regular file 'user_data/data/binance/pairs.json': Permission denied

您可以通过以下方式修复用户数据目录的权限:

sudo chown -R $UID:$GID user_data

在当前时间范围之前下载额外数据

假设您已经下载了2022年的所有数据(--timerange 20220101-)- 但是现在您想要使用更早的数据进行回测。 您可以使用 --prepend 标志,并与 --timerange 结合使用,指定一个截止日期。

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

注意

如果数据可用,则在此模式下,Freqtrade会忽略结束日期,并更新结束日期以匹配现有数据的开始日期。

数据格式

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

  • feather - 基于Apache Arrow的数据格式
  • json - 纯文本json文件
  • jsongz - json文件的gzip压缩版本
  • hdf5 - 高性能数据存储区
  • parquet - 列式存储区(仅支持OHLCV数据)

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

可以通过分别使用--data-format-ohlcv--data-format-trades命令行参数来更改这一设置。 为了使这些更改持久化,您还应将以下代码片段添加到您的配置中,这样您就不必每次都插入上述参数:

    // ...
    "dataformat_ohlcv": "hdf5",
    "dataformat_trades": "hdf5",
    // ...

如果在下载过程中更改了默认数据格式,那么配置文件中的dataformat_ohlcvdataformat_trades键也需要相应调整为所选的数据格式。

注意

您可以使用convert-dataconvert-trade-data方法在不同的数据格式之间进行转换。

数据格式比较

下面是根据以下数据和使用Linux的time命令进行的比较。

找到6个货币对/时间框架组合。
+----------+-------------+--------+---------------------+---------------------+
|   货币对 |   时间框架 |   类型 |                开始 |                  结束 |
|----------+-------------+--------+---------------------+---------------------|
| BTC/USDT |          5m |   现货 | 2017-08-17 04:00:00 | 2022-09-13 19:25:00 |
| ETH/USDT |          1m |   现货 | 2017-08-17 04:00:00 | 2022-09-13 19:26:00 |
| BTC/USDT |          1m |   现货 | 2017-08-17 04:00:00 | 2022-09-13 19:30:00 |
| XRP/USDT |          5m |   现货 | 2018-05-04 08:10:00 | 2022-09-13 19:15:00 |
| XRP/USDT |          1m |   现货 | 2018-05-04 08:11:00 | 2022-09-13 19:22:00 |
| ETH/USDT |          5m |   现货 | 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
hdf5 145Mb 3.9s
parquet 83Mb 3.8s

大小是根据上述指定的计时器范围内的BTC/USDT 1m现货组合的大小。

为了在性能和大小之间取得最佳平衡,我们建议使用默认的feather格式或者parquet格式。

货币对文件

除了在config.json中的白名单之外,还可以使用pairs.json文件。 例如,如果你正在使用币安:* 在目录 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"
]

注意

pairs.json 文件仅在未加载任何配置时使用(通过命名隐式加载或通过 --config 标志)。 您可以通过 --pairs-file pairs.json 强制使用此文件,但我们建议使用配置中的配对列表,可以通过配置中的 exchange.pair_whitelistpairs 设置来使用。

子命令转换数据

usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
                              [-d PATH] [--userdir PATH]
                              [-p PAIRS [PAIRS ...]] --format-from
                              {json,jsongz,hdf5,feather,parquet} --format-to
                              {json,jsongz,hdf5,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,hdf5,feather,parquet}
                        数据转换的来源格式。
  --format-to {json,jsongz,hdf5,feather,parquet}
                        数据转换的目标格式。
  --erase               清除所选交易所/货币对/时间框架的所有现有数据。
  --exchange EXCHANGE   交易所名称。仅在未提供配置时有效。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的K线的时间框架。空格分隔的列表。默认值:`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线类型。默认为所有可用类型。

常用参数:
  -v, --verbose         详细模式(-vv 获取更多消息,-vvv 获取所有消息)。
  --logfile FILE, --log-file FILE
                        记录到指定的文件。特殊值有:'syslog'、'journald'。有关更多细节,请参见文档。
  -V, --version         显示程序的版本号并退出
  -c PATH, --config PATH
                        指定配置文件(默认值:`userdir/config.json` 或 `config.json`)存在任何一个。可以使用多个 --config 选项。可以将其设置为 `-` 从 stdin 读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                        具有历史回测数据的目录路径。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录路径。
以下命令将把 ~/.freqtrade/data/binance 中的所有蜡烛(OHLCV)数据从 json 格式转换为 jsongz 格式,以节省磁盘空间的同时还会删除原始的 json 数据文件(使用 --erase 参数)。

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

子命令转换交易数据

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

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

常用参数:
  -v, --verbose         详细模式(-vv 以获取更多详细信息,-vvv 来查看所有消息)。
  --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
                        历史回测数据所在的目录路径。
  --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转为ohlcv

当您需要使用--dl-trades(仅适用于kraken)下载数据时,将交易数据转换为ohlcv数据是最后一步。 这个命令可以让您在不重新下载数据的情况下重复执行此最后一步,以获得其他的时间框架。

使用方法: freqtrade trades-to-ohlcv [-h] [-v] [--logfile FILE] [-V] [-c PATH]
                                 [-d PATH] [--userdir PATH]
                                 [-p PAIRS [PAIRS ...]]
                                 [-t TIMEFRAMES [TIMEFRAMES ...]]
                                 [--exchange EXCHANGE]
                                 [--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
                                 [--data-format-trades {json,jsongz,hdf5,feather}]

选项:
  -h, --help            显示此帮助信息并退出
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                        限制命令只针对这些交易对。交易对之间用空格分隔。
  -t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
                        指定要下载的周期。空格分隔的列表。默认值: `1m 5m`。
  --exchange EXCHANGE   交易所名称。只在没有提供配置文件时有效。
  --data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
                        存储已下载的蜡烛(OHLCV)数据的格式。默认值: `feather`。
  --data-format-trades {json,jsongz,hdf5,feather}
                        存储已下载的交易数据的格式。默认值: `feather`。

常用参数:
  -v, --verbose         详细模式(-vv 获得更多信息,-vvv 获取所有消息)。
  --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
                        包含历史回测数据的目录路径。
  --userdir PATH, --user-data-dir PATH
                        用户数据目录路径。

例子- trades转为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] [--logfile FILE] [-V] [-c PATH] [-d PATH]
                           [--userdir PATH] [--exchange EXCHANGE]
                           [--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
                           [-p PAIRS [PAIRS ...]]
                           [--trading-mode {spot,margin,futures}]
                           [--show-timerange]

选项:
  -h,--help             显示帮助信息并退出
  --exchange EXCHANGE    交易所名称。仅在未提供配置文件时有效。
  --data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
                         下载的蜡烛(OHLCV)数据的存储格式。 (默认:`feather`)。
  -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
                         仅限制命令以这些交易对。交易对之间用空格分隔。
  --trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
                         选择交易模式
  --show-timerange       显示可用数据的时间范围。 (可能需要一段时间来计算)。

常用参数:
  -v,--verbose           详细模式(-vv可以获得更多信息,-vvv可以获取所有消息)。
  --logfile FILE, --log-file FILE
                         记录到指定的文件中。特殊值是:
                         'syslog','journald'。有关更多详细信息,请参阅文档。
  -V,--version          显示程序的版本号并退出
  -c PATH,--config PATH
                         指定配置文件(默认为:
                         `userdir/config.json`或`config.json`(存在的那一个))。可以
                         设置为`-`以从stdin读取配置。
  -d PATH, --datadir PATH, --data-dir PATH
                         带有历史回测数据的目录的路径。
  --userdir PATH, --user-data-dir PATH
                         用户数据目录的路径。

示例 list-data

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

找到 33 个交易对/时间框架组合。
交易对      时间框架
----------  -----------------------------------------
ADA/BTC     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ADA/ETH     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ETH/BTC     5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ETH/USDT    5m, 15m, 30m, 1h, 2h, 4h

交易(tick)数据

默认情况下,download-data 子命令会下载蜡烛(OHLCV)数据。一些交易所还通过其 API 提供历史交易数据。 如果您需要许多不同的时间框架,此数据可能很有用,因为它只下载一次,然后在本地重新采样到所需的时间框架中。

由于该数据通常很大,所以默认情况下文件使用了 feather 文件格式。它们存储在您的数据目录中,按照 <pair>-trades.feather 的命名约定(例如 ETH_BTC-trades.feather)。增量模式也受支持,与历史 OHLCV 数据相同,因此使用 --days 8 每周下载数据将创建一个增量数据仓库。使用此模式,只需在调用中添加 --dl-trades。这将切换下载方法以下载交易,并在本地重新采样数据。

不要使用

除非你是 Kraken 用户,否则不要使用此功能。大多数其他交易所提供足够历史的 OHLCV 数据。

示例调用:

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

Note

尽管此方法使用异步调用,但速度较慢,因为它需要前一次调用的结果来生成对交易所的下一个请求。

Warning

在 Freqtrade dry-run 和实时交易模式下,历史交易数据不可用,因为所有经过测试的交易所都会延迟几百个蜡烛提供此数据,所以不适用于实时交易。

Kraken 用户

Kraken 用户在开始下载数据之前,应阅读此文档

下一步

太棒了,你现在已经下载了回测数据,因此你可以开始回测你的策略了。