diff --git a/lib/drift/orders.ts b/lib/drift/orders.ts index 18cfc51..702f25a 100644 --- a/lib/drift/orders.ts +++ b/lib/drift/orders.ts @@ -468,7 +468,15 @@ export async function closePosition( } // Calculate size to close - const sizeToClose = position.size * (params.percentToClose / 100) + let sizeToClose = position.size * (params.percentToClose / 100) + + // CRITICAL FIX: If calculated size is below minimum, close 100% instead + // This prevents "runner" positions from being too small to close + if (sizeToClose < marketConfig.minOrderSize) { + console.log(`⚠️ Calculated close size ${sizeToClose.toFixed(4)} is below minimum ${marketConfig.minOrderSize}`) + console.log(` Forcing 100% close to avoid Drift rejection`) + sizeToClose = position.size // Close entire position + } console.log(`📝 Close order details:`) console.log(` Current position: ${position.size.toFixed(4)} ${position.side}`)