数据下载¶
获取回测和超参优化所需的数据¶
要下载回测和超参优化所需的数据(蜡烛图/ 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_ohlcv
和dataformat_trades
键也需要相应调整为所选的数据格式。
注意
您可以使用convert-data和convert-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_whitelist
或 pairs
设置来使用。
子命令转换数据¶
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 用户在开始下载数据之前,应阅读此文档。
下一步¶
太棒了,你现在已经下载了回测数据,因此你可以开始回测你的策略了。