diff --git a/lib/drift/orders.ts b/lib/drift/orders.ts index 48042de..ab463b0 100644 --- a/lib/drift/orders.ts +++ b/lib/drift/orders.ts @@ -504,15 +504,23 @@ export async function closePosition( throw new Error(`No active position for ${params.symbol}`) } + console.log(`🔍 CLOSE POSITION DEBUG:`) + console.log(` params.percentToClose: ${params.percentToClose}`) + console.log(` position.size: ${position.size}`) + console.log(` marketConfig.minOrderSize: ${marketConfig.minOrderSize}`) + // Calculate size to close let sizeToClose = position.size * (params.percentToClose / 100) + console.log(` Calculated sizeToClose: ${sizeToClose}`) + console.log(` Is below minimum? ${sizeToClose < marketConfig.minOrderSize}`) // 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) { - logger.log(`⚠️ Calculated close size ${sizeToClose.toFixed(4)} is below minimum ${marketConfig.minOrderSize}`) - logger.log(` Forcing 100% close to avoid Drift rejection`) + console.log(`⚠️ OVERRIDE: Calculated close size ${sizeToClose.toFixed(4)} is below minimum ${marketConfig.minOrderSize}`) + console.log(`⚠️ OVERRIDE: Forcing 100% close to avoid Drift rejection`) sizeToClose = position.size // Close entire position + console.log(`⚠️ OVERRIDE: New sizeToClose = ${sizeToClose}`) } logger.log(`📝 Close order details:`)