You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FTX API报「Missing parameter market」错误求助:已传入market参数仍无法完成下单

解决FTX下单API "Missing parameter market" 错误

我一眼就看出问题出在哪了——你把POST请求的订单参数放到了URL查询参数里,而FTX的下单API只认请求体(request body)里的参数,同时签名的生成也漏掉了请求体的内容,这两个问题凑在一起就导致了报错。

问题根源拆解

  1. 参数传递方式错误:你用了requests.Request的params参数,这个参数是用来把键值对拼在URL后面的(比如https://ftx.com/api/orders?market=DOT-PERP...),但FTX的POST下单API期望参数以JSON格式放在请求体中,完全不会读取URL里的这些参数,所以自然会提示"Missing parameter market"。
  2. 签名payload不完整:FTX的签名规则明确要求,对于带有请求体的POST请求,签名payload必须包含时间戳 + 请求方法 + 请求路径 + 紧凑格式的请求体JSON,你之前的payload只用到了前三项,缺少请求体内容,就算参数位置对了,签名验证也会失败。

修改后的完整代码

import requests
import time
import hmac
import json

# 替换成你的API密钥
api_key = "YOUR_API_KEY"
api_secret = "YOUR_API_SECRET"

s = requests.Session()
url = "https://ftx.com/api/orders"
ts = int(time.time() * 1000)

# 订单参数保持不变
order_params = { 
    "market": "DOT-PERP", 
    "side": "buy", 
    "price": 31, 
    "type": "limit", 
    "size": 0.5, 
    "reduceOnly": False, 
    "ioc": False, 
    "postOnly": False, 
    "clientId": None 
}

# 1. 把参数放到json参数中,自动生成请求体
request = requests.Request("POST", url, json=order_params)
prepared = request.prepare()

# 2. 生成包含请求体的签名payload(用紧凑JSON,无空格换行)
request_body = json.dumps(order_params, separators=(',', ':'))
signature_payload = f'{ts}{prepared.method}{prepared.path_url}{request_body}'.encode()

# 计算签名
signature = hmac.new(api_secret.encode(), signature_payload, 'sha256').hexdigest()

# 给prepared请求添加头信息(直接操作prepared对象,避免重复prepare覆盖)
prepared.headers['FTX-KEY'] = api_key
prepared.headers['FTX-SIGN'] = signature
prepared.headers['FTX-TS'] = str(ts)

# 发送请求并打印响应
r = s.send(prepared)
print(r.json())

关键修改点说明

  • 用json=order_params替代params=order_params:这个参数会让requests自动把字典序列化为JSON字符串放到请求体中,同时设置正确的Content-Type: application/json头,完全符合FTX API的要求。
  • 签名payload加入紧凑JSON请求体:json.dumps(..., separators=(',', ':'))生成的是没有空格和换行的JSON字符串,这是FTX签名要求的格式,不能用带空格的格式化JSON。
  • 直接修改prepared的headers:你原来的代码在设置headers后又调用了一次request.prepare(),这会重新生成请求对象,覆盖之前的头信息,修改后直接操作已经prepare好的对象更可靠。

按照这个代码修改后,应该就能成功下单了。

内容的提问来源于stack exchange,提问作者Ramiro Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:12:47