使用XTB API平仓时遭遇SE199内部错误求助
SE199是XTB服务器端内部错误,但多数情况和客户端请求参数不合法直接相关,针对你的代码,可从以下方向排查:
修正平仓操作方向
平仓操作的TRADE_OPERATION_CODE必须和原订单方向相反:原订单是买入(BUY)则平仓用SELL,原订单是卖出(SELL)则平仓用BUY。不要硬编码BUY,建议通过tradeRecordToClose.Type字段判断原订单方向,动态设置操作码。验证订单ID参数
平仓时需传入持仓对应的订单号(即tradeRecord.Order),确认你循环匹配的Order2是否是正确的持仓标识,避免因匹配不到有效持仓导致tradeRecordToClose为null,传入无效ID触发错误。调整价格参数
不要使用tradeRecordToClose.Close_price作为平仓价格,该字段是历史成交价格,并非当前可成交的市价。平仓建议直接传0.0,让服务器自动匹配最优成交价格。匹配交易量精度
避免硬编码交易量0.1,直接使用tradeRecordToClose.Volume作为平仓交易量,确保和原持仓量完全一致,同时确认该品种的最小交易量步长支持当前数值。添加参数校验与日志
在执行交易前,校验tradeRecordToClose是否不为null,同时输出tradeTransInfoRecord的所有参数值,确认每个字段都符合XTB API的参数要求,避免空引用或非法参数被服务器转为SE199错误。检查API版本与账户权限
确认使用的XTB API客户端是最新版本,旧版本可能存在参数映射问题;同时检查账户状态,确保是正常交易账户、持仓有足够保证金、无操作权限限制。
内容的提问来源于stack exchange,提问作者JJJ

