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

C#调用Oanda API限价单时遇PRICE_PRECISION_EXCEEDED错误

Oanda限价单精度超限问题解决办法

问题根源

你用Math.Round(1.091m, 5, MidpointRounding.ToZero)处理价格后,提交时仍收到PRICE_PRECISION_EXCEEDED拒绝信息,从返回的price:"1.09099999999999"可以看出:问题出在价格序列化过程中出现了浮点精度漂移——Decimal类型的四舍五入结果在转为JSON数值时,被解析成了带有多余尾数位的数值,导致Oanda判定精度不符合要求。

解决步骤

  • 强制将价格格式化为固定小数位的字符串
    不要依赖四舍五入后的Decimal值直接序列化,而是把价格格式化为严格5位小数的字符串,再提交给Oanda API。示例代码:

    using System.Globalization;
    
    var roundedPrice = Math.Round(1.091m, 5, MidpointRounding.ToZero);
    // 格式化为固定5位小数的字符串,确保格式统一
    var formattedPrice = roundedPrice.ToString("F5", CultureInfo.InvariantCulture);
    

    这样得到的字符串是"1.09100",完全符合EUR_USD的精度要求,避免了序列化时的精度丢失问题。

  • 修改API请求模型的价格字段类型
    如果你使用强类型模型发送请求,把价格字段的类型从decimal改成string,直接传递格式化后的字符串,彻底规避数值序列化带来的精度问题。

  • 提前验证提交的请求内容
    在发送API请求前,打印或记录要提交的JSON内容,确认price字段是符合要求的5位小数格式,没有多余的尾数位。

额外说明

Oanda不同交易品种的精度要求不同,EUR_USD默认是5位小数(最小变动单位0.00001)。如果不确定其他品种的精度要求,可以通过Oanda的工具查询对应品种的详细参数,确保格式化的小数位和平台要求一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:41