Database changes:
- Added indicatorVersion field to Trade table
- Added indicatorVersion field to BlockedSignal table
- Tracks which Pine Script version (v5, v6, etc.) generated each signal
Pine Script changes:
- v6 now includes '| IND:v6' in alert messages
- Enables differentiation between v5 and v6 signals in database
Documentation:
- Created INDICATOR_VERSION_TRACKING.md with full implementation guide
- Includes n8n workflow update instructions
- Includes SQL analysis queries for v5 vs v6 comparison
- Includes rollback plan if needed
Next steps (manual):
1. Update n8n workflow Parse Signal Enhanced node to extract IND field
2. Update n8n HTTP requests to pass indicatorVersion
3. Update API endpoints to accept and save indicatorVersion
4. Rebuild Docker container
Benefits:
- Compare v5 vs v6 Pine Script effectiveness
- Track which version generated winning/losing trades
- Validate that v6 price position filter reduces blocked signals
- Data-driven decisions on Pine Script improvements
New v6 improvements:
- Fixed price position calculation: 100-bar range (was 20-bar)
- Added price position filter: prevents chasing extremes (85% max for longs, 15% min for shorts)
- Added volume filter: optional range check (0.7-3.0x average)
- Added RSI momentum filter: optional directional confirmation
- All new filters toggleable with sensible defaults
Key changes:
- Price position filter ENABLED by default (prevents flip-flop losses)
- Volume and RSI filters DISABLED by default (test incrementally)
- Aligns TradingView filtering with bot's 5-metric scoring system
- Reduces signals sent to bot that would be blocked anyway
Rationale:
Database analysis showed range extreme entries (9-94%) caused flip-flop losses.
V6 filters these at source instead of blocking in bot after webhook call.
Testing approach:
1. Phase 1: Price position filter only (test 5-10 signals)
2. Phase 2: Add volume filter if needed
3. Phase 3: Add RSI filter as last resort