本页结合了交易所特定的常见问题和信息,这些信息很可能不适用于其他交易所。
交易所配置¶
Freqtrade 基于 CCXT 库,支持超过 100 个加密货币交易所市场和交易 API。完整的最新列表可以在 CCXT 仓库主页 找到。然而,该机器人仅由开发团队在少数几个交易所上进行了测试。当前列表可以在本文档的"首页"部分找到。
欢迎测试其他交易所并提交您的反馈或 PR 以改进机器人或确认交易所是否完美运行。
一些交易所需要特殊配置,可以在下面找到。
示例交易所配置¶
“binance” 的交易所配置如下所示:
"exchange": {
"name": "binance",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {},
"ccxt_async_config": {},
// ...设置速率限制¶
通常,CCXT 设置的速率限制是可靠的并且运行良好。如果遇到与速率限制相关的问题(通常在日志中出现 DDOS 异常),可以轻松更改 rateLimit 设置。
"exchange": {
"name": "kraken",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 3100
},此配置启用了 kraken,并启用了速率限制以避免被交易所封禁。"rateLimit": 3100 定义了每次调用之间的等待时间为 3.1 秒。也可以通过将 "enableRateLimit" 设置为 false 来完全禁用。
Binance¶
Binance 支持 time_in_force。
Binance 黑名单建议¶
对于 Binance,建议将 "BNB/<STAKE>" 添加到您的黑名单中以避免问题,除非您愿意在账户中保持足够的额外 BNB,或者除非您愿意禁用使用 BNB 支付费用。
Binance 账户可以使用 BNB 支付费用,如果交易恰好是 BNB,进一步的交易可能会消耗这个头寸,并使初始 BNB 交易无法出售,因为预期金额不再存在。
如果没有足够的 BNB 来支付交易费用,则费用将不会由 BNB 支付,也不会发生费用减免。Freqtrade 永远不会购买 BNB 来支付费用。BNB 需要手动购买和监控。
Binance 站点¶
Binance 已分为两个,用户必须使用正确的 ccxt 交易所 ID,否则 API 密钥将不被识别。
- binance.com - 国际用户。使用交易所 ID:
binance。 - binance.us - 美国用户。使用交易所 ID:
binanceus。
Binance RSA 密钥¶
Freqtrade 支持 binance RSA API 密钥。
我们建议将其作为环境变量使用。
export FREQTRADE__EXCHANGE__SECRET="$(cat ./rsa_binance.private)"它们也可以通过配置文件进行配置。由于 json 不支持多行字符串,您必须将所有换行符替换为 \n 以生成有效的 json 文件。
// ...
"key": "<someapikey>",
"secret": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBABACAFQA<...>s8KX8=\n-----END PRIVATE KEY-----"
// ...Binance 期货¶
Binance 有特定的(不幸的是复杂的)期货交易量化规则,需要遵循,并且禁止过低的交易金额(以及其他)。违反这些规则将导致交易限制。
在 Binance 期货市场上交易时,必须使用订单簿,因为没有期货的价格行情数据。
"entry_pricing": {
"use_order_book": true,
"order_book_top": 1,
"check_depth_of_market": {
"enabled": false,
"bids_to_ask_delta": 1
}
},
"exit_pricing": {
"use_order_book": true,
"order_book_top": 1
},Binance 隔离期货设置¶
用户还必须将期货设置"持仓模式"设置为"单向模式",并将"资产模式"设置为"单一资产模式"。
这些设置将在启动时进行检查,如果设置错误,freqtrade 将显示错误。

Freqtrade 不会尝试更改这些设置。
Binance BNFCR 期货¶
BNFCR 模式是 Binance 上的一种特殊期货模式,用于解决欧洲的监管问题。
要使用 BNFCR 期货,您必须具有以下设置组合:
{
// ...
"trading_mode": "futures",
"margin_mode": "cross",
"proxy_coin": "BNFCR",
"stake_currency": "USDT" // 或 "USDC"
// ...
}stake_currency 设置定义了机器人将操作的市场。这个选择是任意的。
在交易所上,您必须使用"多资产模式" - 和"持仓模式"设置为"单向模式"。
Freqtrade 将在启动时检查这些设置,但不会尝试更改它们。
Bingx¶
BingX 支持 time_in_force,设置包括"GTC"(直到取消)、“IOC”(立即或取消)和"PO"(仅限挂单)。
Kraken¶
Kraken 支持 time_in_force,设置包括"GTC"(直到取消)、“IOC”(立即或取消)和"PO"(仅限挂单)。
历史 Kraken 数据¶
Kraken API 仅提供 720 个历史蜡烛,这对于 Freqtrade 的模拟运行和实时交易模式足够,但对于回测来说是个问题。
要下载 Kraken 交易所的数据,使用 --dl-trades 是强制性的,否则机器人将一遍又一遍地下载相同的 720 个蜡烛,您将没有足够的回测数据。
为了加快下载速度,您可以下载 Kraken 提供的 交易 zip 文件。
这些文件通常每季度更新一次。Freqtrade 期望这些文件放在 user_data/data/kraken/trades_csv 中。
如果使用增量文件,以下结构可能是有意义的,其中"完整"历史在一个目录中,增量文件在不同的目录中。
此模式的假设是数据已下载并解压缩,保持文件名不变。
重复内容将被忽略(基于时间戳)- 尽管假设数据中没有间隙。
这意味着,如果您的"完整"历史在 2022 年第四季度结束 - 那么增量更新 Q1 2023 和 Q2 2023 都可用。
没有这些将导致数据不完整,因此在使用数据时会导致无效结果。
└── trades_csv
├── Kraken_full_history
│ ├── BCHEUR.csv
│ └── XBTEUR.csv
├── Kraken_Trading_History_Q1_2023
│ ├── BCHEUR.csv
│ └── XBTEUR.csv
└── Kraken_Trading_History_Q2_2023
├── BCHEUR.csv
└── XBTEUR.csv您可以将这些文件转换为 freqtrade 文件:
freqtrade convert-trade-data --exchange kraken --format-from kraken_csv --format-to feather
# 将交易数据转换为不同的 ohlcv 时间周期
freqtrade trades-to-ohlcv -p BTC/EUR BCH/EUR --exchange kraken -t 1m 5m 15m 1h转换后的数据也使下载数据成为可能,并将在最新加载的交易之后开始下载。
freqtrade download-data --exchange kraken --dl-trades -p BTC/EUR BCH/EUR Kucoin¶
Kucoin 要求每个 API 密钥都有一个密码,因此您需要将此密钥添加到配置中,以便您的交易所部分如下所示:
"exchange": {
"name": "kucoin",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}Kucoin 支持 time_in_force。
Kucoin 黑名单¶
对于 Kucoin,建议将 "KCS/<STAKE>" 添加到您的黑名单中以避免问题,除非您愿意在账户中保持足够的额外 KCS,或者除非您愿意禁用使用 KCS 支付费用。
Kucoin 账户可以使用 KCS 支付费用,如果交易恰好是 KCS,进一步的交易可能会消耗这个头寸,并使初始 KCS 交易无法出售,因为预期金额不再存在。
HTX¶
OKX¶
OKX 要求每个 API 密钥都有一个密码,因此您需要将此密钥添加到配置中,以便您的交易所部分如下所示:
"exchange": {
"name": "okx",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}如果您在 my.okx.com(OKX EAA)上注册,您将需要使用 "myokx" 作为交易所名称。
使用错误的交易所将导致错误"OKX Error 50119: API key doesn’t exist" - 因为这两个是独立的实体。
Gate.io¶
Gate.io 允许使用 POINT 支付费用。由于这不是可交易的货币(没有常规市场可用),自动费用计算将失败(并默认为 0 费用)。
配置参数 exchange.unknown_fee_rate 可用于指定 Point 与质押货币之间的汇率。显然,更改质押货币也需要更改此值。
Gate API 密钥需要在您想要交易的市场类型之上具有以下权限:
- “现货交易” 或 “永续期货”(读写)(选择两者之一,或与您想要交易的市场匹配的一个)
- “钱包”(只读)
- “账户”(只读)
没有这些权限,机器人将无法正确启动并显示"权限缺失"等错误。
Bybit¶
Bybit 支持 time_in_force,设置包括 “GTC”(有效直至取消)、“FOK”(全部成交或取消)、“IOC”(立即成交或取消)和 “PO”(仅挂单)。
Bybit 上的期货交易目前支持逐仓期货模式。
在启动时,freqtrade 将为整个(子)账户设置持仓模式为"单向模式"。这避免了反复调用(减慢机器人操作),但意味着手动更改此设置可能导致异常和错误。
由于 bybit 不提供资金费率历史记录,实盘交易也使用模拟运行计算。
实盘期货交易的 API 密钥必须具有以下权限:
- 读写
- 合约 - 订单
- 合约 - 持仓
我们强烈建议将所有 API 密钥限制到您将使用的 IP 地址。
Bitmart¶
Bitmart 要求 API 密钥备忘录(您给 API 密钥起的名字)与交易所密钥和秘钥一起使用。 因此需要同时传递 UID。
"exchange": {
"name": "bitmart",
"uid": "your_bitmart_api_key_memo",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}Bitget¶
Bitget 每个 API 密钥都需要一个密码短语,因此您需要将此密钥添加到配置中,使您的交易所部分如下所示:
"exchange": {
"name": "bitget",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "your_exchange_api_key_password",
// ...
}Bitget 支持 time_in_force,设置包括 “GTC”(有效直至取消)、“FOK”(全部成交或取消)、“IOC”(立即成交或取消)和 “PO”(仅挂单)。
Hyperliquid¶
Hyperliquid 是一个去中心化交易所(DEX)。去中心化交易所与普通交易所的工作方式略有不同。
私有 API 调用不是使用 API 密钥进行身份验证,而是需要使用您钱包的私钥进行签名(我们建议为此使用 API 钱包,可在 Hyperliquid 或您选择的钱包中生成)。 需要这样配置:
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_eth_wallet_address", // 这不应该是您的 API 钱包地址!
"privateKey": "your_api_private_key",
// ...
}- walletAddress 为十六进制格式:
0x<40个十六进制字符>- 可以从您的钱包中轻松复制 - 应该是您的主钱包地址,而不是您的 API 钱包地址。 - privateKey 为十六进制格式:
0x<64个十六进制字符>- 使用 API 钱包在创建时显示的密钥。
Hyperliquid 在 Arbitrum One 链上处理存取款,这是一个建立在以太坊之上的第二层扩展解决方案。Hyperliquid 使用 USDC 作为报价货币/抵押品。在 Hyperliquid 上存入 USDC 的过程需要几个步骤,请参阅如何开始交易了解所需步骤的详细信息。
Hyperliquid 保险库/子账户¶
Hyperliquid 允许您创建保险库或子账户。 要在 Freqtrade 中使用这些,您需要使用以下配置模式:
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_vault_address", // 保险库或子账户地址
"privateKey": "your_api_private_key",
"ccxt_config": {
"options": {
"vaultAddress": "your_vault_address" // 可选,仅当您想使用保险库或子账户时
}
},
// ...
}您的余额和交易现在将从您的保险库/子账户中使用 - 不再从您的主账户。
Hyperliquid 历史数据¶
Hyperliquid API 不提供超出单次调用以获取当前数据的历史数据,因此无法下载数据,因为下载的数据不会构成适当的历史数据。
Bitvavo¶
如果您的账户需要使用 operatorId,您可以在配置文件中如下设置:
"exchange": {
"name": "bitvavo",
"key": "",
"secret": "",
"ccxt_config": {
"options": {
"operatorId": "123567"
}
},
}Bitvavo 期望 operatorId 是整数。
所有交易所¶
如果您经常遇到 Nonce 错误(如 InvalidNonce),最好重新生成 API 密钥。重置 Nonce 很困难,通常重新生成 API 密钥更容易。
其他交易所的随机注释¶
The Ocean(交易所 ID:theocean)交易所使用 Web3 功能,需要安装 web3 Python 包:
pip3 install web3获取最新价格/不完整的 K 线¶
大多数交易所通过其 OHLCV/klines API 接口返回当前不完整的 K 线。
默认情况下,Freqtrade 假设从交易所获取的是不完整 K 线,并移除最后一根 K 线,假设它是不完整的 K 线。
您的交易所是否返回不完整 K 线可以使用贡献者文档中的辅助脚本进行检查。
由于重绘的危险,Freqtrade 不允许您使用这个不完整的 K 线。
但是,如果这是基于您的策略需要最新价格 - 那么这个需求可以在策略内使用数据提供器获得。
高级 Freqtrade 交易所配置¶
可以使用 _ft_has_params 设置配置高级选项,这将覆盖默认值和特定于交易所的行为。
可用选项在交易所类中列为 _ft_has_default。
例如,要使用 Kraken 测试订单类型 FOK,并将 K 线限制修改为 200(因此每次 API 调用只获得 200 根 K 线):
"exchange": {
"name": "kraken",
"_ft_has_params": {
"order_time_in_force": ["GTC", "FOK"],
"ohlcv_candle_limit": 200
}
//...
}