要下载用于回测的历史行情数据,可以使用 download-data 命令。例如,运行 freqtrade download-data --exchange binance --pairs BTC/USDT ETH/USDT --timeframes 5m 15m 会从 Binance 下载指定交易对在 5 分钟和 15 分钟周期的历史 K 线数据,并保存为 JSON 文件。这些数据会被存储在 user_data/data/exchange_name/ 目录下,供后续回测、分析或绘图使用。建议在开始回测前先下载足够长时间的历史数据,以确保策略测试的可靠性。
download-data
freqtrade download-data --exchange binance --pairs BTC/USDT ETH/USDT --timeframes 5m 15m
user_data/data/exchange_name/
使用 freqtrade download-data 命令可以下载加密货币的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)数据。默认情况下,该命令会下载 1m 和 5m 时间框架的数据。你需要指定交易对(pairs)、交易所(exchange)和数据保存目录(datadir)。例如,运行 freqtrade download-data -p BTC/USDT ETH/USDT --exchange binance 会从 Binance 下载 BTC/USDT 和 ETH/USDT 的 K 线数据。如果没有提供配置文件,必须通过 --exchange 指定交易所。数据默认保存在 userdir/data/ 目录下,可通过 -d 参数自定义路径。
freqtrade download-data
1m
5m
freqtrade download-data -p BTC/USDT ETH/USDT --exchange binance
--exchange
userdir/data/
-d
你可以通过 --pairs 参数直接在命令行中空格分隔地列出要下载的交易对,例如 --pairs BTC/USDT ETH/USDT LTC/USDT。如果交易对数量较多,也可以使用 --pairs-file 参数指定一个包含交易对列表的文本文件,每行一个交易对,这种方式优先级高于 --pairs 参数。如果未指定任何交易对,系统将使用配置文件中定义的交易对列表。此外,使用 --include-inactive-pairs 可以下载交易所中当前不活跃的交易对数据。
--pairs
--pairs BTC/USDT ETH/USDT LTC/USDT
--pairs-file
--include-inactive-pairs
你可以使用 --days INT 参数指定下载过去多少天的数据,例如 --days 30 会下载最近 30 天的 OHLCV 数据。如果想为新添加的交易对单独设置下载天数,可以使用 --new-pairs-days INT,默认值为 None,即不单独处理新交易对。更精确的时间控制可以通过 --timerange 参数实现,支持格式如 20230101-(从2023年1月1日起)、20230101-20231231(指定区间)或 20230101-20230131。时间范围设置会覆盖 --days 的效果。
--days INT
--days 30
--new-pairs-days INT
None
--timerange
20230101-
20230101-20231231
20230101-20230131
--days
使用 -t 或 --timeframes 参数可以指定要下载的时间框架,支持多个时间框架同时下载,用空格分隔。例如:-t 1m 5m 15m 1h 会同时下载 1 分钟、5 分钟、15 分钟和 1 小时的 K 线数据。如果不指定,默认下载 1m 和 5m 两个时间框架。时间框架必须是交易所支持的格式,如 1m, 5m, 15m, 1h, 4h, 1d 等。每个时间框架都会生成独立的数据文件,存储在对应目录下,便于后续在不同周期的策略中使用。
-t
--timeframes
-t 1m 5m 15m 1h
15m
1h
4h
1d
使用 -d 或 --datadir 参数可以指定数据存储的根目录。默认路径为 userdir/data/,如果你使用了 --userdir 自定义用户目录,数据会保存在该目录下的 data/ 子目录中。例如:-d /my/freqtrade/data 会将所有下载的 OHLCV 和交易数据保存到 /my/freqtrade/data/ 目录中。若要下载期货(futures)数据,需同时指定 --trading-mode futures,数据会保存在对应子目录(如 data/futures/)中。确保该目录有写入权限,否则下载会失败。
--datadir
--userdir
data/
-d /my/freqtrade/data
/my/freqtrade/data/
--trading-mode futures
data/futures/
你可以通过 --data-format-ohlcv 和 --data-format-trades 参数分别设置 OHLCV 数据和交易数据的存储格式。支持的格式包括:json(纯文本)、jsongz(压缩的 JSON)、feather(高性能二进制格式)和 parquet(列式存储,适合大数据分析)。默认情况下,OHLCV 和交易数据都使用 feather 格式,因其读写速度快、跨平台兼容性好。如果你需要节省磁盘空间,可以选择 jsongz;若用于大数据处理或与其他工具集成,推荐使用 parquet。
--data-format-ohlcv
--data-format-trades
json
jsongz
feather
parquet
freqtrade 的 download-data 命令一次只能针对一个交易所进行操作。要下载多个交易所的数据,你需要多次运行命令,每次指定不同的 --exchange 参数。例如,先运行 freqtrade download-data --exchange binance --pairs BTC/USDT,再运行 freqtrade download-data --exchange kraken --pairs BTC/USDT。每个交易所的数据会独立保存在各自的数据目录中(如 datadir/binance/ 和 datadir/kraken/)。如果你希望统一管理,建议为每个交易所设置独立的 --datadir 路径,并在配置文件中分别管理。
freqtrade download-data --exchange binance --pairs BTC/USDT
freqtrade download-data --exchange kraken --pairs BTC/USDT
datadir/binance/
datadir/kraken/
使用 freqtrade download-data 命令可以下载用于回测和超参数优化的历史K线(OHLCV)数据。如果未指定任何额外参数,系统将默认下载过去30天内、时间周期为1分钟和5分钟的数据,交易所和交易对将从 config.json 配置文件中读取。如果没有提供配置文件,则必须通过 --exchange 参数指定交易所。例如,下载Binance交易所的所有交易对数据,可运行:freqtrade download-data --exchange binance。你也可以直接指定交易对,如 --pairs ETH/USDT BTC/USDT,或使用正则表达式批量下载,如 --pairs ".*/USDT" 来获取所有USDT交易对。
config.json
freqtrade download-data --exchange binance
--pairs ETH/USDT BTC/USDT
--pairs ".*/USDT"
你可以使用正则表达式快速下载特定报价货币的所有活跃交易对。例如,运行 freqtrade download-data --exchange binance --pairs ".*/USDT" 将自动展开并下载Binance上所有以USDT为报价货币的活跃交易对。如果希望也包含已下架(inactive)的交易对,可添加 --include-inactive-pairs 参数。这种方式比手动列出每个交易对更高效,特别适合构建全市场策略。
freqtrade download-data --exchange binance --pairs ".*/USDT"
Freqtrade 支持四种数据格式:feather(基于Apache Arrow)、json(纯文本JSON)、jsongz(gzip压缩的JSON)和 parquet(列式存储)。默认情况下,OHLCV和交易数据均使用 feather 格式存储。根据性能测试,feather 在读取速度(约3.5秒)和文件大小(72MB)之间取得了最佳平衡;parquet 读取速度也很快(3.8秒),但文件稍大(83MB);json 文件最大(149MB)且读取慢(25.6秒);jsongz 压缩率高(39MB),但解压耗时较长(27秒)。因此,推荐使用默认的 feather 格式,或在存储空间紧张时使用 parquet。
使用 freqtrade convert-data 命令可以将历史K线数据从一种存储格式转换为另一种格式。你需要指定源格式(--format-from)和目标格式(--format-to),支持的格式包括 json、jsongz、feather 和 parquet。例如,将 JSON 格式的数据转换为 Feather 格式,可以运行:freqtrade convert-data --format-from json --format-to feather。该命令会读取默认数据目录中的数据文件,并按指定格式重新保存。
freqtrade convert-data
--format-from
--format-to
freqtrade convert-data --format-from json --format-to feather
将数据从 JSON 转换为 Feather 或 Parquet 格式的主要目的是提升数据读取速度和降低内存占用。JSON 是文本格式,解析缓慢且占用空间大;而 Feather 和 Parquet 是二进制列式存储格式,专为数据分析优化,支持快速随机读取、压缩和高效序列化。在回测、策略测试或机器学习训练中,频繁读取大量K线数据时,使用 Feather/Parquet 可显著减少加载时间,提升整体性能。例如,一个10GB的JSON数据集可能仅需2GB的Parquet存储,加载速度提升数倍。
你可以使用 freqtrade list-data 命令来列出当前数据目录中已下载的交易数据或K线(OHLCV)数据。该命令会扫描指定的数据目录,显示所有可用的交易对及其对应的时间范围。默认情况下,它会显示OHLCV数据;如果需要查看交易明细(trades)数据,需配合 --trades 参数使用。例如:freqtrade list-data 会列出所有交易对的K线数据,而 freqtrade list-data --trades 则会列出交易明细数据。
freqtrade list-data
--trades
freqtrade list-data --trades
下载的数据文件默认存储在 --datadir 指定的目录下的子文件夹中,结构为:<datadir>/<exchange>/<timeframe>/<pair>.<format>。例如,Binance 的 5 分钟 BTC/USDT 数据文件路径可能是 userdir/data/binance/5m/BTC_USDT.feather。如果使用了 --trading-mode futures,则路径会变为 userdir/data/futures/binance/5m/BTC_USDT.feather。交易数据(通过 --dl-trades 下载)存储在相同结构的 trades/ 子目录下,如 userdir/data/binance/trades/BTC_USDT.feather。数据文件格式由 --data-format-ohlcv 和 --data-format-trades 控制,支持 feather、parquet、json 等。
<datadir>/<exchange>/<timeframe>/<pair>.<format>
userdir/data/binance/5m/BTC_USDT.feather
userdir/data/futures/binance/5m/BTC_USDT.feather
--dl-trades
trades/
userdir/data/binance/trades/BTC_USDT.feather