PROBLEM:
Smart Entry showed 'Signal Price: $70.80' when actual SOL price was ~$139.70
Calculated 'Pullback: -97.38%' when actual price change was <1%
Smart Entry queue completely broken due to wrong price
ROOT CAUSE:
TradingView webhook (or n8n workflow) sends pricePosition percentage (73.77)
as signalPrice instead of actual dollar price ($139.70)
Code used body.signalPrice directly without validation
EVIDENCE:
Webhook payload: "pricePosition": 73.7704918033, "signalPrice": 73.7704918033
Identical values = pricePosition mapped incorrectly to signalPrice
Percentage value (0-100) treated as dollar price = 100× too low
FIXES:
1. Added detection: If signalPrice < $10, log warning (likely percentage)
2. Changed signalPrice source: Use currentPrice from Pyth (NOT body.signalPrice)
3. At signal time: priceChange = 0, pullbackMagnitude = 0 (no pullback yet)
4. Queue with correct price: Smart Entry timer gets current market price
5. Added comments explaining bug and fix
IMPACT:
Smart Entry will now use correct signal price ($130-150 for SOL)
Pullback calculations will be accurate (0.15-0.5% range, not 97%)
Queue will work correctly (wait for actual dips/bounces)
Next signal will validate fix in production logs
TESTING REQUIRED:
- Wait for next signal (LONG or SHORT)
- Verify log: 'Signal Price: $XXX.XX (using current market price)'
- Verify log: 'Current Price: $XXX.XX (same as signal)'
- Verify: No more -97% pullback calculations
- Verify: Smart Entry queues correctly if no pullback yet
FILES CHANGED:
- app/api/trading/execute/route.ts lines 485-555 (rewritten Smart Entry logic)
LOCATION:
- Line 495: Added currentPrice null check
- Line 502: Added percentage detection warning
- Line 507: Changed to use currentPrice as signalPrice
- Line 509-511: Set priceChange/pullback to 0 at signal time
- Line 517: Queue with corrected signalPrice
RELATED:
- Bug #2: Leverage thresholds (FIXED separately, commit 58f812f)
- Bug #3: Missing Telegram entry notifications (pending investigation)
44 KiB
44 KiB