From 6ac2647565566aec5d1062733c89cb18be7c20fb Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Wed, 17 Dec 2025 13:39:54 +0100 Subject: [PATCH] feat: Make Smart Validation Queue thresholds adaptive in Telegram notifications CHANGES: - Extended sendValidationNotification interface with confirmationThreshold, maxDrawdown, entryWindowMinutes - Updated telegram.ts to display actual queued signal thresholds instead of hardcoded values - Modified smart-validation-queue.ts to pass dynamic threshold values to Telegram - Messages now show exact thresholds used for each signal (not fixed 0.3%/1.0%/90min) PURPOSE: - User requested adaptive display instead of hardcoded values - Enables future per-signal threshold customization - Each signal can have different thresholds based on characteristics EXAMPLE: Before: 'Will enter if +0.3% confirms' (all signals) After: 'Will enter if +0.25% confirms' (high ADX signal) 'Will enter if +0.4% confirms' (low ADX signal) STATUS: Ready for deployment - will show actual threshold per signal --- lib/notifications/telegram.ts | 26 +++++++++++++++----------- lib/trading/smart-validation-queue.ts | 3 +++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/notifications/telegram.ts b/lib/notifications/telegram.ts index b7b7e70..0ae7cd3 100644 --- a/lib/notifications/telegram.ts +++ b/lib/notifications/telegram.ts @@ -99,6 +99,9 @@ export async function sendValidationNotification(options: { qualityScore: number validationTime?: number // seconds priceChange?: number // percentage + confirmationThreshold?: number // percentage for queued event + maxDrawdown?: number // percentage for queued event + entryWindowMinutes?: number // minutes for queued event }): Promise { try { const token = process.env.TELEGRAM_BOT_TOKEN @@ -113,17 +116,18 @@ export async function sendValidationNotification(options: { switch (options.event) { case 'queued': - message = `⏰ SIGNAL QUEUED FOR VALIDATION - -${directionEmoji} ${options.symbol} ${options.direction.toUpperCase()} - -📊 Quality Score: ${options.qualityScore}/100 -📍 Price: $${options.originalPrice.toFixed(2)} - -🧠 Watching for price confirmation... -✅ Will enter if ${options.direction === 'long' ? '+0.3%' : '-0.3%'} -❌ Will abandon if ${options.direction === 'long' ? '-1.0%' : '+1.0%'} -` + message = [ + '⏰ SIGNAL QUEUED FOR VALIDATION ⏰', + '', + `📊 ${options.symbol}`, + `📍 ${options.direction === 'long' ? 'LONG' : 'SHORT'} @ $${options.originalPrice.toFixed(2)}`, + `🎯 Quality Score: ${options.qualityScore}`, + '', + '⏱️ Smart Entry System Active', + `✅ Will enter if ${options.direction === 'long' ? '+' : '-'}${options.confirmationThreshold || 0.3}% confirms`, + `❌ Will abandon if ${options.direction === 'long' ? '' : '+'}${Math.abs(options.maxDrawdown || -1.0)}% against`, + `⏳ Monitoring for ${options.entryWindowMinutes || 90} minutes`, + ].join('\n') break case 'confirmed': diff --git a/lib/trading/smart-validation-queue.ts b/lib/trading/smart-validation-queue.ts index 627a0f1..45402bb 100644 --- a/lib/trading/smart-validation-queue.ts +++ b/lib/trading/smart-validation-queue.ts @@ -123,6 +123,9 @@ class SmartValidationQueue { direction: params.direction, originalPrice: params.originalPrice, qualityScore: params.qualityScore, + confirmationThreshold: queuedSignal.confirmationThreshold, + maxDrawdown: queuedSignal.maxDrawdown, + entryWindowMinutes: queuedSignal.entryWindowMinutes, }) // Start monitoring if not already running