diff --git a/src/core/order-coordinator.ts b/src/core/order-coordinator.ts index d41e0f3..253bd21 100644 --- a/src/core/order-coordinator.ts +++ b/src/core/order-coordinator.ts @@ -169,9 +169,6 @@ export async function placeOrder( lockOperating(locks, timers, pendings, type, log); try { const closePosition = reduceOnly ? true : undefined; - // StandX API: reduce-only 订单不能设置 tp/sl - const slPrice = reduceOnly ? undefined : opts?.slPrice; - const tpPrice = reduceOnly ? undefined : opts?.tpPrice; const order = await routeLimitOrder({ adapter, symbol, @@ -181,8 +178,8 @@ export async function placeOrder( timeInForce: reduceOnly ? "GTC" : "GTX", reduceOnly: reduceOnly ? true : undefined, closePosition, - slPrice, - tpPrice, + slPrice: opts?.slPrice, + tpPrice: opts?.tpPrice, }); pendings[type] = String(order.orderId); log("order", `挂限价单: ${side} @ ${priceNum} 数量 ${quantity} reduceOnly=${reduceOnly}${opts?.slPrice ? ` sl=${opts.slPrice}` : ""}`); diff --git a/src/strategy/maker-points-engine.ts b/src/strategy/maker-points-engine.ts index a83b0c6..40073fc 100644 --- a/src/strategy/maker-points-engine.ts +++ b/src/strategy/maker-points-engine.ts @@ -701,9 +701,13 @@ export class MakerPointsEngine { if (!target) continue; if (target.amount < EPS) continue; try { - // 计算止损价格:买单在价格下方 $1,卖单在价格上方 $1 + // reduce-only 订单不能设置 tp/sl,仅开仓单设置止损 const priceNum = Number(target.price); - const slPrice = target.side === "BUY" ? priceNum - 1 : priceNum + 1; + const slPrice = target.reduceOnly + ? undefined + : target.side === "BUY" + ? priceNum - 1 + : priceNum + 1; await placeOrder( this.exchange, this.config.symbol,