交易所对接

本章详细介绍 Freqtrade 如何对接交易所,涵盖支持的交易所列表、API Key 配置、交易对设置、费率管理以及交易所限制说明,帮助读者顺利完成交易所对接。

支持的交易所

完全支持的交易所

Freqtrade 通过 CCXT 库支持超过 60 家交易所,以下是经过充分测试的交易所:

交易所现货期货杠杆推荐等级
Binance强烈推荐
OKX-推荐
Bybit-推荐
Kraken--推荐
KuCoin-推荐
Gate.io-推荐
Bitget--可用
MEXC--可用
HTX (Huobi)--可用
Coinbase--可用

检查交易所兼容性

# 列出交易所支持的市场类型
freqtrade list-exchanges

# 检查特定交易所是否可用
freqtrade list-exchanges --exchange binance

# 列出交易所支持的所有交易对
freqtrade list-pairs --exchange binance --all

API Key 配置

获取 API Key

以 Binance 为例:

  1. 登录 Binance 账户
  2. 进入 API 管理页面
  3. 创建新的 API Key
  4. 设置权限(交易权限必须开启)
  5. 保存 API Key 和 Secret

权限要求

权限现货期货说明
读取获取余额和市场数据
交易下单交易
提现禁止开启,防止资产被盗

安全警告:永远不要开启提现权限,不要将 API Key 提交到代码仓库。

配置 API Key

方法一:直接写在配置文件中

{
    "exchange": {
        "name": "binance",
        "key": "your_api_key_here",
        "secret": "your_api_secret_here",
        "password": ""
    }
}

方法二:使用环境变量

export FREQTRADE__EXCHANGE__KEY="your_api_key_here"
export FREQTRADE__EXCHANGE__SECRET="your_api_secret_here"

方法三:使用单独的秘密配置文件

// private_config.json
{
    "exchange": {
        "key": "your_api_key_here",
        "secret": "your_api_secret_here"
    }
}
# 启动时加载秘密配置文件
freqtrade trade \
    --config user_data/config.json \
    --config user_data/private_config.json

IP 白名单

建议在交易所 API 管理页面设置 IP 白名单,只允许你的服务器 IP 访问:

# 仅允许 VPS 服务器的 IP
你的服务器IP地址

# 不要添加你的本地 IP(除非开发测试)

交易对配置

交易对命名

Freqtrade 使用标准的 CCXT 交易对命名格式:基础币种/报价币种

{
    "exchange": {
        "pair_whitelist": [
            "BTC/USDT",
            "ETH/USDT",
            "SOL/USDT",
            "BNB/USDT"
        ],
        "pair_blacklist": [
            ".*/BUSD",
            ".*BULL.*",
            ".*BEAR.*",
            "USDC/USDT",
            "TUSD/USDT"
        ]
    }
}

交易对状态与限制

# 列出交易对及其状态
freqtrade list-pairs --exchange binance -p BTC/USDT ETH/USDT

# 查看交易对交易限制
freqtrade list-markets --exchange binance -p BTC/USDT

交易对过滤器

交易所对交易对有以下限制(可在 list-markets 中查看):

过滤器说明示例(BTC/USDT)
minNotional最小成交金额10 USDT
lotSize最小/最大下单数量0.0001 BTC
priceFilter价格精度0.010
minQty最小交易数量0.0001
stepSize数量递增步长0.0001

费率配置

默认费率

{
    "exchange": {
        "name": "binance",
        "key": "",
        "secret": ""
    }
}

Freqtrade 会自动从交易所获取费率。默认的现货交易费率如下:

交易所默认 Maker 费率默认 Taker 费率VIP 最低 Maker
Binance0.10%0.10%0.036%
OKX0.08%0.10%0.02%
Bybit0.10%0.10%0.02%
Kraken0.16%0.26%0.04%
KuCoin0.10%0.10%0.08%

自定义费率

可以通过配置覆盖默认费率:

{
    "exchange": {
        "name": "binance",
        "key": "",
        "secret": "",
        "ccxt_config": {
            "enableRateLimit": true,
            "rateLimit": 50
        }
    },
    "fee": 0.001,
    "fee_cost": 0.001,
    "fee_currency": "BNB"
}

费率优化建议

{
    "trading_mode": "spot",
    "exchange": {
        "name": "binance",
        "ccxt_config": {
            "enableRateLimit": true,
            "rateLimit": 50,
            "options": {
                "defaultType": "spot"
            }
        }
    }
}
  • 使用 BNB 支付手续费可享受 25% 折扣
  • 使用交易所平台币支付手续费可降低费率
  • 达到 VIP 等级可进一步降低费率
  • 对于高频策略,费率影响尤为显著

交易所限制

API 限流

{
    "exchange": {
        "ccxt_config": {
            "enableRateLimit": true,
            "rateLimit": 50
        },
        "ccxt_async_config": {
            "enableRateLimit": true,
            "rateLimit": 50
        }
    }
}

常见交易所 API 限制:

交易所权重限制每秒限制推荐 rateLimit
Binance1200 权重/分钟10 请求/秒50ms
OKX20 请求/秒-50ms
Bybit50 请求/秒10 请求/秒20ms
Kraken-20 请求/秒50ms

交易限制

{
    "exchange": {
        "name": "binance",
        "skip_open_order_update": false,
        "unknown_fee_rate": 0.001,
        "log_responses": false,
        "timeout": 20
    }
}

沙箱测试

{
    "exchange": {
        "name": "binance",
        "sandbox": true,
        "key": "sandbox_key",
        "secret": "sandbox_secret"
    }
}

支持沙箱的交易所:

交易所沙箱地址状态
Binancetestnet.binance.vision稳定
Bybittestnet.bybit.com稳定
OKXokx.com 模拟盘测试中

常见连接问题

问题原因解决方案
ExchangeError: ...API Key 无效检查 Key/Secret 是否正确
AuthenticationError权限不足检查 API Key 的交易权限
RateLimitExceeded请求频率过高增大 rateLimit 或启用 enableRateLimit
InsufficientFunds余额不足检查账户余额
BadSymbol交易对不存在使用 list-pairs 检查交易对
NetworkError网络连接问题检查网络,设置代理
DDoSProtection触发风控降低请求频率
连接超时网络延迟增大 timeout 配置

代理配置

如果需要通过代理访问交易所:

{
    "exchange": {
        "name": "binance",
        "ccxt_config": {
            "proxies": {
                "http": "http://127.0.0.1:7890",
                "https": "http://127.0.0.1:7890"
            }
        },
        "ccxt_async_config": {
            "aiohttp_proxy": "http://127.0.0.1:7890"
        }
    }
}

交易所最佳实践

安全性建议

  1. API Key 管理

    • 使用环境变量或独立配置文件存储密钥
    • 在交易所设置 IP 白名单
    • 只开启交易权限,不开提现权限
  2. 多交易所策略

    • 主交易所 + 备用交易所切换
    • 分散资金降低单点风险
  3. 监控与告警

    • 监控 API 错误率
    • 监控账户余额变动
    • 监控交易对状态变更

选择交易所的考虑因素

因素重要性说明
流动性影响滑点和成交速度
费率高频策略影响大
API 稳定性影响机器人正常运行
支持的币种策略需要的交易对是否齐全
期货支持是否需要做空/对冲
法币入金是否方便出入金