Problem: After TP1, SL moved to 'breakeven' but used database entry price, which can differ from Drift's actual fill price by /bin/bash.10-0.15. Example: - DB stored: $139.18291 entry - Drift actual: $139.07 entry - SL set to: $139.18 (DB value) Solution: Query position.entryPrice from Drift SDK when setting breakeven SL. Drift SDK calculates entry from on-chain data (quoteAssetAmount / baseAssetAmount) which is more accurate than database stored value. Code change (lib/trading/position-manager.ts line ~511): - Before: trade.stopLossPrice = trade.entryPrice - After: trade.stopLossPrice = position.entryPrice || trade.entryPrice Impact: TRUE breakeven protection - no slippage losses from price discrepancies. Related: Common Pitfall #33 (orphaned position restoration with wrong entry price)
57 KiB
57 KiB