ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Freqtrade list-data 命令实战:全面盘点本地 OHLCV 与成交数据的时间跨度

Freqtrade list-data 命令实战:全面盘点本地 OHLCV 与成交数据的时间跨度 Freqtrade list-data 命令实战全面盘点本地 OHLCV 与成交数据的时间跨度【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade本文聚焦 Freqtrade 的list-data子命令它是数据管理工具链download-data、convert-data等中的查看器用于快速盘点本地已下载的历史 K 线OHLCV或逐笔成交trades数据覆盖了哪些交易对、时间框架、数据类型与时间范围。读完后你将掌握其全部命令行参数的用法与默认值、理解其底层如何基于数据处理器DataHandler扫描数据目录并解析文件名、以及如何用--show-timerange精确核对数据缺口——这些能力在回测前确认数据完整性、跨交易所迁移数据时校验文件命名都是日常高频操作。命令定位数据工作流中的盘点器list-data在 docs/commands/main.md 的命令总览中归入数据管理子命令其文档片段通过 include 机制嵌入 docs/data-download.md 的 Sub-command list-data 小节。它不连接交易所运行模式为UTIL_NO_EXCHANGE即纯本地读盘因此执行很快、无 API 负担适合在任何机器上随时核对数据资产。入口函数是 start_list_data它在 arguments.py 中注册了ARGS_LIST_DATA选项组ARGS_LIST_DATA [ exchange, dataformat_ohlcv, dataformat_trades, trades, pairs, trading_mode, show_timerange, ]完整参数解析下面是freqtrade list-data --help的完整参数清单源自 docs/commands/list-data.mdusage: 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] options: -h, --help show this help message and exit --exchange EXCHANGE Exchange name. Only valid if no config is provided. --data-format-ohlcv {json,jsongz,feather,parquet} Storage format for downloaded candle (OHLCV) data. (default: feather). --data-format-trades {json,jsongz,feather,parquet} Storage format for downloaded trades data. (default: feather). --trades Work on trades data instead of OHLCV data. -p, --pairs PAIRS [PAIRS ...] Limit command to these pairs. Pairs are space- separated. --trading-mode, --tradingmode {spot,margin,futures} Select Trading mode --show-timerange Show timerange available for available data. (May take a while to calculate). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --logfile, --log-file FILE Log to the file specified. Special values are: syslog, journald. See the documentation for more details. -V, --version show programs version number and exit -c, --config PATH Specify configuration file (default: userdir/config.json or config.json whichever exists). Multiple --config options may be used. Can be set to - to read config from stdin. -d, --datadir, --data-dir PATH Path to the base directory of the exchange with historical backtesting data. To see futures data, use trading-mode additionally. --userdir, --user-data-dir PATH Path to userdata directory.逐项说明如下参数取值/默认值作用--exchange EXCHANGE字符串默认取配置指定交易所名用于拼接数据目录user_data/data/exchange/。仅在不提供配置文件时有效源码见 cli_options.py 的exchange选项定义。--data-format-ohlcvjson/jsongz/feather/parquet默认feather指定 K 线数据的存储格式决定处理器按哪种文件扩展名扫描目录。--data-format-trades同上默认feather指定成交数据的存储格式。--trades布尔开关改为盘点 trades逐笔成交数据而非 OHLCV 数据。-p, --pairs空格分隔的交易对列表将结果限制到指定交易对支持通配符展开。--trading-modespot/margin/futures默认spot选择交易模式。查看期货数据时必须额外使用此参数。--show-timerange布尔开关显示每个数据文件的时间范围起始/结束时间、K 线数计算量较大耗时较长。数据格式选项如何落到数据处理器--data-format-ohlcv与--data-format-trades在配置中被记录为dataformat_ohlcv/dataformat_trades见 configuration.py 中打印 Using ... to store OHLCV data 的位置。随后start_list_data通过 get_datahandler 依格式实例化对应的IDataHandler子类json/jsongz映射到 jsondatahandler.pyfeather映射到 featherdatahandler.pyparquet映射到 parquetdatahandler.py。值得注意的是旧的hdf5格式在 idatahandler.py 中已显式抛错废弃并建议迁移到feather。docs/data-download.md 中还给出了一组同数据量下各格式的体积/读取耗时对比BTC/USDT 1m spot约 470 万根 K 线feather约 115 MB / 1.6sjson约 265 MB / 17.1sjsongz约 83 MB / 23.6sparquet约 149 MB / 2.5s官方推荐默认的feather作为性能与体积的最优折中。两种运行模式快速盘点与时间范围核查start_list_data的核心逻辑分两支if args[trades]: start_list_trades_data(args) return config setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) dhc get_datahandler(config[datadir], config[dataformat_ohlcv]) paircombs dhc.ohlcv_get_available_data( config[datadir], config.get(trading_mode, TradingMode.SPOT) )源码见 data_commands.py。默认模式交易对 × 时间框架组合表不加--show-timerange时命令按(pair, timeframe, candle_type)三元组去重、按交易对和时间框架分钟数排序并将同一交易对的多个时间框架合并到一行输出 Pair / Timeframe / Type 三列的富文本表格。示例输出源自 docs/data-download.mdfreqtrade 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 │ └───────────────┴───────────────────────────────────────────┴───────┘其中 Type 列的spot即 K 线类型CandleType期货数据会显示futures、funding_rate、mark等见 candle_columns.py 与 enums/candletype.py。--show-timerange模式逐文件的时间范围核查开启--show-timerange后命令对每个(pair, timeframe, candle_type)组合调用 ohlcv_data_min_max——该方法真正加载 DataFrame读取首行与末行的date列返回(start, end, length)三元组——因此会输出完整的 Pair / Timeframe / Type / From / To / Candles 六列表格# 以各数据格式计时 time freqtrade list-data --show-timerange --data-format-ohlcv featherFound 6 pair / timeframe combinations. ┏━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Pair ┃ Timeframe ┃ Type ┃ From ┃ To ┃ Candles ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ BTC/USDT │ 1m │ spot │ 2017-08-17 04:00:00 │ 2026-07-15 04:42:00 │ 4677171 │ │ BTC/USDT │ 5m │ spot │ 2017-08-17 04:00:00 │ 2026-07-15 04:35:00 │ 935445 │ │ ETH/USDT │ 1m │ spot │ 2017-08-17 04:00:00 │ 2026-07-15 04:43:00 │ 4677172 │ │ ETH/USDT │ 5m │ spot │ 2017-08-17 04:00:00 │ 2026-07-15 04:35:00 │ 935445 │ │ XRP/USDT │ 1m │ spot │ 2018-05-04 08:11:00 │ 2026-07-15 04:44:00 │ 4305252 │ │ XRP/USDT │ 5m │ spot │ 2018-05-04 08:10:00 │ 2026-07-15 04:40:00 │ 861055 │ └──────────┴───────────┴──────┴─────────────────────┴─────────────────────┴─────────┘这正是回测前核查数据缺口数据起点晚于预期、终点早于当前时间最可靠的手段。若某行Candles为 0、From/To 均为 1970-01-01说明对应文件实际为空——这正是ohlcv_data_min_max在空 DataFrame 时返回 Unix 纪元时间的行为idatahandler.py。trades 数据盘点--trades开关加--trades后命令转入 start_list_trades_data改为用trades_get_available_data扫描*-trades.ext文件按对输出。不带--show-timerange时列出 Pair / Type 两列开启后逐对调用 trades_data_min_max将毫秒级timestamp转为 UTC 时间输出 Pair / Type / From / To / Trades 五列表格freqtrade list-data --trades --show-timerangeFound 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 │ └─────────┴──────┴─────────────────────┴─────────────────────┴────────┘注意 trades 数据没有时间框架维度——逐笔成交文件按对存储文件名形如XRP_ETH-trades.feather时间框架是在 trades-to-ohlcv 阶段才生成的。底层原理文件名即索引理解list-data的关键在于它不打开任何数据文件默认模式仅靠文件名正则解析出 (pair, timeframe, candle_type)。odatahandler 的扫描逻辑 定义了两条正则_OHLCV_REGEX re.compile(r^([\w-])\-(\d[a-zA-Z]{1,2})\-?([a-zA-Z_]*)?(?\.)) _TRADES_REGEX re.compile(r^([\w-])\-(trades)?(?\.))ohlcv_get_available_data用_OHLCV_REGEX匹配{pair}-{timeframe}-{candle_type}.{ext}命名的文件idatahandler.py若trading_mode FUTURES扫描目录会先joinpath(futures)——这与 docs/commands/list-data.md 中--datadir的帮助文本 To see futures data, use trading-mode additionally 完全对应期货 K 线文件含futures、funding_rate、mark类型存放在user_data/data/exchange/futures/子目录见 _pair_data_filename 中candle_type ! CandleType.SPOT时追加futures目录的分支。文件名中的_由 rebuild_pair_from_filename 还原第一个_恢复为/第二个恢复为:期货标记语法例如BTC_USDT_USDT→BTC/USDT:USDT而rebuild_timeframe_from_filename会把磁盘上的1Mo月度时间框架避免大小写不敏感文件系统冲突还原为1M。-p/--pairs过滤与通配符--pairs的过滤调用 expand_pairlist 对本地已有数据做子串/通配符展开keep_invalidTrue表示未匹配的输入不会报错只是不出现pl expand_pairlist(args[pairs], [p[0] for p in paircombs], keep_invalidTrue) paircombs [comb for comb in paircombs if comb[0] in pl]因此freqtrade list-data -p BTC/USDT*或-p ETH都能快速定位相关数据若指定了不存在的对结果只会少一行而不会抛错。典型使用场景与命令组合结合 docs/data-download.md 的上下文list-data的典型用法包括回测前数据核查确认pairs_whitelist中每个对都有策略 timeframe 对应的数据且时间范围覆盖timerange。freqtrade list-data --show-timerange -p BTC/USDT ETH/USDT期货数据盘点必须加--trading-mode futuresfreqtrade list-data --trading-mode futures --show-timerange不指定该参数时命令只会列出现货目录下的文件futures/子目录中的期货、资金费率、标记价格文件会被完全忽略。校验数据格式转换结果用convert-data把 json 转成 feather 后可用不同--data-format-ohlcv复核两侧文件清单一致hdf5已废弃docs/deprecated.md 中也建议用list-data验证转换。核对逐笔成交数据用于 trades-to-ohlcv 之前freqtrade list-data --trades --show-timerange --data-format-trades feather机器可读脚本化配合--no-color将输出重定向到文件--logfile可写 syslog/journald-v/-vv/-vvv逐级提高日志详细度。实现与测试佐证命令入口与两种输出形态组合表 / 时间范围表start_list_data、start_list_trades_data子命令注册list-data→start_list_data选项组ARGS_LIST_DATAarguments.py文件名正则、min/max 统计、futures 子目录处理idatahandler.py单元测试覆盖默认列表、--pairs过滤、--show-timerange、--trades与期货模式等分支位于 tests/commands/test_commands.pytest_start_list_data系列用例。小结list-data是 Freqtrade 数据管理链中成本最低的数据审计工具默认模式仅凭文件名正则即可完成全量组合盘点--show-timerange则按需加载数据给出精确的时间边界。掌握--trades、--trading-mode、--pairs与--data-format-ohlcv/--data-format-trades的组合即可覆盖现货/期货、K 线/成交、多格式数据目录下的绝大多数我到底有哪些数据、缺了哪段的核对需求。【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表