首页
/ Freqtrade list-exchanges 命令详解:如何查看与筛选可用交易所

Freqtrade list-exchanges 命令详解:如何查看与筛选可用交易所

2026-09-05 21:10:57作者:尤峻淳Whitney

Freqtrade 通过 list-exchanges 子命令展示当前环境中可用(或 ccxt 库已知)的所有交易所,并标注官方支持状态、缺失 API 能力与交易模式。本文完整覆盖该命令的全部选项与输出解读,并结合源码说明“一个交易所为何可用/被标记为不可用”的判定逻辑,读完你既能熟练使用该命令做环境体检,也能理解 Freqtrade 对交易所能力矩阵(ccxt has 标志)的底层校验机制。

命令与选项总览

list-exchanges 是一个不连接交易所、不需要 API 密钥的纯本地工具命令,其完整帮助输出如下(继承自 list-exchanges.md):

usage: freqtrade list-exchanges [-h] [-v] [--no-color] [--logfile FILE] [-V]
                                [-c PATH] [-d PATH] [--userdir PATH] [-1] [-a]
                                [--trading-mode {spot,margin,futures}]
                                [--dex-exchanges]

options:
  -h, --help            show this help message and exit
  -1, --one-column      Print output in one column.
  -a, --all             Print all exchanges known to the ccxt library.
  --trading-mode, --tradingmode {spot,margin,futures}
                        Select Trading mode
  --dex-exchanges       Print only DEX exchanges.

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 program's 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.

专属选项的源码定义位于 cli_options.py,共 4 个:

选项 作用 说明
-1, --one-column 单列输出 仅打印交易所类名,每行一个,便于脚本化(如 for 循环枚举)
-a, --all 打印 ccxt 库已知的所有交易所 包括已知不可用的“坏”交易所,并显示 Valid 列与缺失原因
--trading-mode 按交易模式过滤 取值 spotmarginfutures,只展示支持该模式的交易所
--dex-exchanges 仅打印 DEX 交易所 只展示 ccxt 中标记为 dex 的去中心化交易所

此外还有一个隐藏的内部调试选项 --ccxt-show-futures-options-exchangesSUPPRESS),用于额外展示 ccxt 期货能力兼容性的 Futures Reason 列,不在 --help 中显示。

通用的 -v--no-color--logfile-V-c-d--userdir 等参数在所有子命令中通用,其中 -c 支持传入 - 从标准输入读取配置,详见 main.md

默认输出:只列“可用”交易所

不带 -a 时,命令过滤掉 valid is False 的交易所,标题为 Exchanges available for Freqtrade (N exchanges):,表格包含以下列:

  • Exchange Name:交易所显示名;官方支持的交易所显示名加绿色加粗并带 (Supported) 斜体标注;
  • Class Name:ccxt 类名;若是别名(alias),名字与类名会被划线删除,并提示 -> use <真实类名>
  • Markets:支持的交易模式列表(如 spot, isolated futures,由该交易所类的 _supported_trading_mode_margin_pairs 决定);DEX 交易所会在模式前加粗的 DEX: 前缀;
  • Reason:缺失 ccxt 能力的原因说明(仅在缺失时非空);
  • Futures Reason(隐藏选项启用时):期货能力缺失说明。

不可用(valid=False)的行整体以红色样式渲染。输出示例(摘自 utils.md,内容可能随时随版本变化):

$ freqtrade list-exchanges
Exchanges available for Freqtrade:
Exchange name       Supported    Markets                 Reason
------------------  -----------  ----------------------  ------------------------------------------------------------------------
binance             Official     spot, isolated futures
bybit                            spot, isolated futures
gate                Official     spot, isolated futures
htx                 Official     spot
huobi                            spot
kraken              Official     spot
okx                 Official     spot, isolated futures

!!! note 上表输出已缩减以保清晰,受支持与可用交易所列表会随版本变化。带有 missing opt: 的条目可能需要特殊配置(例如缺少 fetchTickers 时改用 orderbook),理论上可用但不作保证。

-a 全量输出:Valid 列与缺失原因

加上 -a 后,命令列出 ccxt 库中所有交易所,标题变为 All exchanges supported by the ccxt library (N exchanges):,并额外给出 Valid 列,用于区分“ccxt 认识、但 Freqtrade 认为不可用”的交易所:

$ freqtrade list-exchanges -a
All exchanges supported by the ccxt library:
Exchange name       Valid    Supported    Markets                 Reason
------------------  -------  -----------  ----------------------  ---------------------------------------------------------------------------------
binance             True     Official     spot, isolated futures
bitflyer            False                 spot                    missing: fetchOrder. missing opt: fetchTickers.
bybit               True                  spot, isolated futures
gate                True     Official     spot, isolated futures
htx                 True     Official     spot
kraken              True     Official     spot
okx                 True     Official     spot, isolated futures

Reason 列的取值有两种前缀,含义不同:

  • missing: <method> —— 缺少必需能力,交易所直接判定为不可用;
  • missing opt: <method> —— 缺少可选能力,理论上仍可用但体验受限(如缺失 fetchTickers 时 VolumePairList 等插件无法工作)。

底层判定机制:validate_exchange 与能力矩阵

命令入口是 list_commands.py 中的 start_list_exchanges:它调用 list_available_exchanges(args["list_exchanges_all"]) 拿到交易所清单,再按 trading_modedex_exchanges 过滤,最后用 rich 渲染表格。真正的数据生产逻辑在 exchange_utils.pylist_available_exchangesvalidate_exchange

  1. 交易所集合来源-a 时取 ccxt.exchanges 全集;否则调用 available_exchanges(),即 validate_exchange 判定可用的子集。
  2. 别名解析validate_exchange 会实例化 ccxt.pro(WebSocket 优先)或 ccxt.async_support 中的交易所对象,读取其 has 能力标志。
  3. 必需能力校验common.pyEXCHANGE_HAS_REQUIRED):
    • fetchOrder(可用 fetchOpenOrder/fetchClosedOrder 替代)、fetchL2OrderBook(可用 fetchTicker 替代)、cancelOrdercreateOrderfetchBalancefetchOHLCV
    • 任一必需方法缺失 → valid=False,并写入 missing: ... 原因。
  4. 可选能力校验EXCHANGE_HAS_OPTIONAL):fetchMyTradescreateLimitOrdercreateMarketOrderfetchOrderBookfetchL2OrderBookfetchTickerfetchTickersfetchTradesfetchOrderswatchOHLCV 等,缺失只产生 missing opt: 提示。
  5. 黑名单BAD_EXCHANGES):如 bitmex(“Various reasons”)、probit(需要定期调用 signIn())、poloniexfetch_order 无法同时取回开/平仓)、kucoinfutures/poloniexfutures/binancecoinm(不支持的期货交易所)——命中即强制 valid=False 并附具体原因。
  6. 支持级别标注:类名经 MAP_EXCHANGE_CHILDCLASS(如 gateio→gatehuboi→htxkucoineu→kucoin)映射后,若属于 SUPPORTED_EXCHANGES 白名单(当前包含 binance、binanceus、binanceusdm、bingx、bitget、bybit、bybiteu、gate、gateeu、htx、hyperliquid、kraken、krakenfutures、okx、myokx 等),且不是别名,则 supported=True,输出中标记 (Supported)
  7. 交易模式:若存在对应的 Freqtrade 交易所子类(freqtrade/exchange/ 目录下每个子类的 _supported_trading_mode_margin_pairs 声明),trade_modes 会被更新为该类实际支持的模式组合;否则默认只有 spot--trading-mode 过滤即基于此字段。
  8. DEX 标记:直接读取 ccxt 交易所对象的 dex 属性,--dex-exchanges 据此过滤。

每个条目最终是一个 ValidExchangesType 结构,字段定义见 valid_exchanges_type.pynameclassnamevalidsupportedcommentcomment_futuresdexis_aliasalias_fortrade_modes

实战用法

1. 快速确认某交易所是否可用

freqtrade list-exchanges

2. 排查某交易所为何不可用

freqtrade list-exchanges -a | grep -i bitflyer

Reason 列会直接给出缺失的 ccxt 方法,可据此判断是升级 ccxt 版本解决,还是放弃该交易所。

3. 只看支持期货的交易所 / 只看 DEX

freqtrade list-exchanges --trading-mode futures
freqtrade list-exchanges --dex-exchanges

4. 单列输出驱动批量操作-1 仅输出类名,可直接喂给 shell 循环。例如枚举所有可用交易所的时间框架(示例来自 utils.md):

for i in $(freqtrade list-exchanges -1); do freqtrade list-timeframes --exchange $i; done

5. 重定向到文件时禁用颜色

freqtrade list-exchanges -a --no-color > exchanges.txt

小结与相关命令

list-exchanges 的价值在于它是 Freqtrade 交易所兼容性的“单一事实来源”:可用性由 ccxt has 能力矩阵(必需 + 可选)、内置黑名单和 SUPPORTED_EXCHANGES 白名单共同决定,而 -a 参数让你能同时看到“可用/不可用”的全貌与具体原因。围绕它,可以进一步用 list-timeframes 查看各交易所时间框架、用 list-pairs/list-markets 查看交易对与币种信息,更多工具命令说明见 utils.md

适用前提与限制:该命令只依赖本地安装的 ccxt 库版本做静态检查,不发起任何网络请求,因此其结论随 ccxt 版本变化;具体命令行为以当前仓库源码(list_commands.pyexchange_utils.py)为准。

登录后查看全文
热门项目推荐
相关项目推荐