feat: add indicator version tracking system
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
This commit is contained in:
@@ -220,10 +220,13 @@ baseCurrency = str.replace(syminfo.ticker, "USD", "")
|
||||
baseCurrency := str.replace(baseCurrency, "USDT", "")
|
||||
baseCurrency := str.replace(baseCurrency, "PERP", "")
|
||||
|
||||
// Build enhanced alert messages with context (timeframe.period is dynamic)
|
||||
longAlertMsg = baseCurrency + " buy " + timeframe.period + " | ATR:" + str.tostring(atrPercent, "#.##") + " | ADX:" + str.tostring(adxVal, "#.#") + " | RSI:" + str.tostring(rsi14, "#.#") + " | VOL:" + str.tostring(volumeRatio, "#.##") + " | POS:" + str.tostring(pricePosition, "#.#")
|
||||
// Indicator version for tracking in database
|
||||
indicatorVer = "v6"
|
||||
|
||||
shortAlertMsg = baseCurrency + " sell " + timeframe.period + " | ATR:" + str.tostring(atrPercent, "#.##") + " | ADX:" + str.tostring(adxVal, "#.#") + " | RSI:" + str.tostring(rsi14, "#.#") + " | VOL:" + str.tostring(volumeRatio, "#.##") + " | POS:" + str.tostring(pricePosition, "#.#")
|
||||
// Build enhanced alert messages with context (timeframe.period is dynamic)
|
||||
longAlertMsg = baseCurrency + " buy " + timeframe.period + " | ATR:" + str.tostring(atrPercent, "#.##") + " | ADX:" + str.tostring(adxVal, "#.#") + " | RSI:" + str.tostring(rsi14, "#.#") + " | VOL:" + str.tostring(volumeRatio, "#.##") + " | POS:" + str.tostring(pricePosition, "#.#") + " | IND:" + indicatorVer
|
||||
|
||||
shortAlertMsg = baseCurrency + " sell " + timeframe.period + " | ATR:" + str.tostring(atrPercent, "#.##") + " | ADX:" + str.tostring(adxVal, "#.#") + " | RSI:" + str.tostring(rsi14, "#.#") + " | VOL:" + str.tostring(volumeRatio, "#.##") + " | POS:" + str.tostring(pricePosition, "#.#") + " | IND:" + indicatorVer
|
||||
|
||||
// Fire alerts with dynamic messages (use alert() not alertcondition() for dynamic content)
|
||||
if finalLongSignal
|
||||
|
||||
Reference in New Issue
Block a user