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

Python调用Oanda API报INSTRUMENT_MISSING错误,Postman请求正常

问题分析

核心问题是错误地将序列化后的JSON字符串传给了Oanda v20库的API方法。Oanda的v20.Context下的接口方法(比如api.order.market)接受的data参数是Python字典,而非JSON字符串。当你传入JSON字符串时,库会错误处理请求体,导致API无法正确解析出instrument字段,从而返回INSTRUMENT_MISSING错误。

解决方案

移除json.dumps()的调用,直接将order.to_dict()生成的字典传给data参数:

修改后的market_order函数:

def market_order(order: MarketOrderRequest):
    api = v20.Context(config.hostname, config.port, token=config.token)
    # 直接传入字典,不需要手动序列化
    response = api.order.market(account_id, data=order.to_dict())
    print("Response: {} ({})".format(response.status, response.reason))
    print_order_create_response_transactions(response)
补充说明
  • Oanda v20 Python库内部会自动处理字典到JSON的序列化,以及设置正确的Content-Type请求头。手动序列化后传入字符串,会破坏库的内部处理逻辑,导致请求体格式不符合API预期。
  • 你在Postman中能成功,是因为Postman正确发送了JSON格式的请求体,而你的Python代码之前相当于发送了一个字符串形式的请求体,API无法识别其中的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:31:00