Skip to article frontmatterSkip to article content
CCXT 在 Freqtrade 中的配置与使用指南

面向 Freqtrade 的 CCXT 最佳实践

交易所 API 集成最佳实践清单

面向 Freqtrade 的 ccxt 最佳实践清单 👈 你可以稍后阅读

一、在 Freqtrade 里正确“摆放” ccxt

1) 最小可用配置(Spot 现货)

{
  "exchange": {
    "name": "binance",
    "key": "YOUR_KEY",
    "secret": "YOUR_SECRET",

    // ccxt 通用配置(同时作用于同步/异步实例)
    "ccxt_config": {
      "enableRateLimit": true,          // 强烈建议:内置限流
      "timeout": 30000                  // 30s 超时(按需调整)
    },

    // 仅作用于同步实例(下单/REST 轮询)
    "ccxt_sync_config": {
      "enableRateLimit": true
    },

    // 仅作用于异步实例(WS/并发拉取等)
    "ccxt_async_config": {
      "enableRateLimit": true,
      "rateLimit": 500                  // 例:每 500ms 1 次;具体值看交易所规则
    },

    // WebSocket(Freqtrade 用 ccxt.pro 接入,默认启用)
    "enable_ws": true
  }
}

2) 期货账户(以 Binance U 本位为例)

Binance 期货建议直接用专门的 exchange id

{
  "exchange": {
    "name": "binanceusdm",             // ✅ 正确:USDT-M Futures
    "key": "YOUR_KEY",
    "secret": "YOUR_SECRET",
    "ccxt_config": { "enableRateLimit": true }
  }
}

这是维护者在社区答复中推荐的方式,优于 options.defaultType='future' 的旧写法。(Stack Overflow)

3) 代理(频繁下载 K 线 / 公司网络出海)

4) 不同交易所限流基线

5) 市场元数据刷新


二、实盘/回测的“稳健十条”(和你分模块跑的习惯相配)

  1. 限流+并发

    • 打开 enableRateLimit,批量拉多交易对时控制并发(异步端再加 rateLimit)。(CCXT 文档)
  2. 超时/重试

    • timeout ≥ 10s(建议 20–30s),对临时 DDoSProtection/ExchangeNotAvailable 做指数回退重试。(Scribd)
  3. 精度与最小下单量

    • 依据 load_markets() 返回的 precision / limits 做数量与价格合法化(策略内做 round/clip)。
  4. 账户/产品线选择

    • 期货/永续用专用 id(如 binanceusdm),现货用 binance;避免混用导致签名/路由错误。(Stack Overflow)
  5. WebSocket 优先、REST 兜底

    • 订阅 watch_*(由 Freqtrade 统一消费),频繁轮询 REST 容易撞限流;WS 断线会自动重连并做回退。(Freqtrade, GitHub)
  6. 代理与网络

    • 公司网络下尽量给“交易所流量”走 httpsProxy/wsProxy,把下载器、Telegram 等放全局代理。(Freqtrade)
  7. 下载与缓存

    • 批量补历史数据时,必要时设 only_from_ccxt 以强制走交易所源(兼顾一致性 vs 速度)。(Freqtrade)
  8. 沙盒/干跑

    • 初次上线或大改策略,先 dry_run: true;可再结合交易所测试网(若支持)。(Freqtrade)
  9. 交易所差异化参数

    • 通过 params 定制(如不同 Stop 类型命名差异);遇到“触发单/止盈止损”命名不一致时,查各所说明。(Stack Overflow)
  10. 配置分层与密钥隔离


三、你最常用的两段模板

A) Binance 现货 + 代理 + WS + 限流

{
  "exchange": {
    "name": "binance",
    "key": "YOUR_KEY",
    "secret": "YOUR_SECRET",
    "enable_ws": true,
    "ccxt_config": {
      "enableRateLimit": true,
      "timeout": 30000,
      "httpsProxy": "http://127.0.0.1:7890",
      "wsProxy": "http://127.0.0.1:7890"
    },
    "ccxt_async_config": { "enableRateLimit": true, "rateLimit": 500 }
  }
}

这一套满足你“一边拉数据一边跑模拟”的模式,尽量把实时订阅交给 WS,减少 REST 压力。(Freqtrade)

B) Binance USDT 永续(USDM)

{
  "exchange": {
    "name": "binanceusdm",
    "key": "YOUR_KEY",
    "secret": "YOUR_SECRET",
    "ccxt_config": { "enableRateLimit": true }
  }
}

用专用 id 避免期货/现货 API 搞混。(Stack Overflow)


四、ccxt 背景速览(你关心的“底子”)


五、和你的使用场景强相关的补充建议