使用 ccxt
访问 OKX 的模拟账户和真实账户时,主要区别在于请求的 API 域名不同,以及是否正确设置了访问权限(API key 权限 + 账户模式)。
✅ 一、主要区别总结:
类型 | API 域名(baseUrl ) | 关键设置 |
---|---|---|
真实账户 | https://www.okx.com | 默认设置,使用真实资金 |
模拟账户 | https://www.okx.com (一样的域名) | 需额外设置 "x-simulated-trading": "1" 请求头 |
⚠️注意:OKX 模拟账户与真实账户的接口地址是相同的,唯一的区别在于 HTTP 请求头中是否包含 x-simulated-trading: 1
。
✅ 二、关键代码差别(Python + ccxt)
1️⃣ 访问真实账户的代码(默认配置)
import ccxt
exchange = ccxt.okx({
'apiKey': '你的API_KEY',
'secret': '你的SECRET',
'password': '你的API_PASSPHRASE',
'enableRateLimit': True, # 防止限速
})
balance = exchange.fetch_balance()
print(balance)
2️⃣ 访问模拟账户的代码(需要设置 x-simulated-trading
)
import ccxt
exchange = ccxt.okx({
'apiKey': '你的API_KEY',
'secret': '你的SECRET',
'password': '你的API_PASSPHRASE',
'enableRateLimit': True,
'headers': {
'x-simulated-trading': '1' # 模拟账户的关键设置
}
})
balance = exchange.fetch_balance()
print(balance)
✅ 三、其他注意事项:
1. 模拟账户和真实账户的 API Key 是独立分开的
- 登录 OKX 后,在“API管理”里,创建 模拟账户 API 密钥。
- 如果你用真实账户的 key 去模拟账户接口,是会失败的,反之亦然。
2. 模拟账户没有实盘资金,只支持某些接口
- 比如:下单、查询账户余额、获取持仓等是可以的。
- 某些市场相关数据和 WebSocket 通道在模拟环境中不一定支持完整功能。
✅ 四、实用建议
你可以封装一个函数或配置来切换模拟和真实账户:
def get_okx_exchange(simulated=False):
headers = {'x-simulated-trading': '1'} if simulated else {}
return ccxt.okx({
'apiKey': '你的API_KEY',
'secret': '你的SECRET',
'password': '你的PASSPHRASE',
'enableRateLimit': True,
'headers': headers,
})
如果你还想测试下单或设置不同账户模式(例如逐仓/全仓、交割/永续等),我也可以给你提供具体示例。需要吗?