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

使用XTB API tradeTransaction修改持仓失败求助

问题:使用xAPI tradeTransaction修改持仓时遭遇SE199内部错误及BE4错误

我正在使用xAPI Playground测试通过tradeTransaction指令修改现有持仓。根据官方文档,修改持仓需将type设为3,cmd需匹配现有持仓(0代表BUY,1代表SELL)。

第一次请求及错误

发送的请求:

{
    "command": "tradeTransaction",
    "arguments": {
        "tradeTransInfo": {
            "cmd": 1,
            "customComment": "Some text",
            "expiration": 0,
            "order": order_number_as_int ,
            "price": open_price_as_double,
            "sl": my_double_value,
            "tp": my_another_double_value,
            "symbol": "f.e. OIL.WTI",
            "type": 3,
            "volume": 0.01
        }
    }
}

返回错误:

{
    "status": false,
    "errorCode": "SE199",
    "errorDescr": "Internal error"
}

现有持仓数据

{'cmd': 1, 'order': 474325736, 'digits': 2, 'offset': 0, 'order2': 474325838, 'position': 474325736, 'symbol': 'OIL.WTI', 'comment': '', 'customComment': '', 'commission': 0.0, 'storage': 0.0, 'margin_rate': 0.0, 'close_price': 76.65, 'open_price': 76.57, 'nominalValue': 0.0, 'profit': -3.56, 'volume': 0.01, 'sl': 80.0, 'tp': 70.0, 'closed': False, 'timestamp': 1676665564666, 'spread': 0, 'taxes': 0.0, 'open_time': 1676663063081, 'open_timeString': 'Fri Feb 17 20:44:23 CET 2023', 'close_time': None, 'close_timeString': None, 'expiration': None, 'expirationString': None},

第二次尝试的请求及错误

尝试其他参数组合后,发送如下请求:

{
    "command": "tradeTransaction",
    "arguments": {
        "tradeTransInfo": {
            "cmd": 3,
            "customComment": "Some text",
            "expiration": 0,
            "order": 474325838,
            "price": 0,
            "sl": 0,
            "tp": 0,
            "symbol": "OIL.WTI",
            "type": 3,
            "volume": 0.01
        }
    }
}

返回错误:

{
    "status": false,
    "errorCode": "BE4",
    "errorDescr": "remaining nominal must be greater than zero"
}

我已尝试所有可能的cmd和type参数值,问题仍未解决,且联系XTB官方支持尚未收到回复。请问可能是哪里出现了问题?


回答

SE199内部错误的排查方向

  1. 参数准确性校验

    • 第一次请求中order用了占位符,实际需填入持仓数据中的position(或order)字段值474325736,不能用占位符或错误ID。price字段对于修改持仓(type=3)场景,无需填写开仓价格,部分情况下需填当前市价或直接省略,错误的价格值可能触发后端校验异常。
    • 确认sl和tp的数值符合品种精度要求:OIL.WTI的digits是2,止损止盈值需保留两位小数(如79.90而非79.9)。
  2. 冗余参数清理
    修改持仓时,expiration应设为null而非0,因为持仓无到期时间,传入0会导致后端解析逻辑异常。若仅调整止损止盈,无需填写volume字段(或填写与持仓一致的0.01),冗余或错误的参数可能触发内部错误。

BE4错误的原因分析

第二次请求中使用了order=474325838,但该值是持仓数据中的order2字段(通常为关联挂单ID),而非主持仓ID,系统无法识别有效持仓,进而触发“剩余名义金额必须大于0”的错误。另外cmd=3是无效值,修改持仓的cmd必须与原持仓一致(即1),错误的指令类型会导致逻辑混乱。

修正后的请求示例

基于你的持仓数据,正确的修改持仓(调整止损止盈)请求如下:

{
    "command": "tradeTransaction",
    "arguments": {
        "tradeTransInfo": {
            "cmd": 1,
            "customComment": "Modify SL/TP",
            "expiration": null,
            "order": 474325736,
            "sl": 79.50,
            "tp": 71.00,
            "symbol": "OIL.WTI",
            "type": 3
        }
    }
}

注意事项:

  • order必须填写持仓的position或order字段值474325736
  • 可省略price和volume字段(或volume填0.01)
  • expiration设为null而非0
  • sl和tp需符合品种精度要求

额外建议

若修正后仍出现SE199,可能是XTB后端临时故障,可换时间段重试;同时检查账户保证金是否充足(修改持仓通常不涉及,但极端场景下可能有影响)、API认证信息是否正确、会话是否未过期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:06:45