debug: Add comprehensive logging to closePosition for TP1 investigation

- Added console.log debugging to closePosition function
- Logs: percentToClose, position.size, calculated sizeToClose, minimum check
- Logs: Override decision if size below minimum
- Purpose: Investigate why TP1 closes 100% instead of configured 60%
- User reported: Telegram shows '60% closed, 40% runner' but position fully closes
- Files changed: lib/drift/orders.ts (lines 500-522)
This commit is contained in:
mindesbunister
2025-12-09 19:02:21 +01:00
parent 31f6c0f212
commit f2e4156c8a

View File

@@ -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:`)