feat: Implement re-entry analytics system with fresh TradingView data

- Add market data cache service (5min expiry) for storing TradingView metrics
- Create /api/trading/market-data webhook endpoint for continuous data updates
- Add /api/analytics/reentry-check endpoint for validating manual trades
- Update execute endpoint to auto-cache metrics from incoming signals
- Enhance Telegram bot with pre-execution analytics validation
- Support --force flag to override analytics blocks
- Use fresh ADX/ATR/RSI data when available, fallback to historical
- Apply performance modifiers: -20 for losing streaks, +10 for winning
- Minimum re-entry score 55 (vs 60 for new signals)
- Fail-open design: proceeds if analytics unavailable
- Show data freshness and source in Telegram responses
- Add comprehensive setup guide in docs/guides/REENTRY_ANALYTICS_QUICKSTART.md

Phase 1 implementation for smart manual trade validation.
This commit is contained in:
mindesbunister
2025-11-07 20:40:07 +01:00
parent 6d5991172a
commit 9b767342dc
14 changed files with 1150 additions and 568 deletions

View File

@@ -52,7 +52,6 @@ export interface CreateTradeParams {
volumeAtEntry?: number
pricePositionAtEntry?: number
signalQualityScore?: number
signalQualityVersion?: string // Track which scoring logic version was used
// Phantom trade fields
status?: string
isPhantom?: boolean
@@ -76,7 +75,6 @@ export interface UpdateTradeStateParams {
maxAdverseExcursion?: number
maxFavorablePrice?: number
maxAdversePrice?: number
runnerTrailingPercent?: number
}
export interface UpdateTradeExitParams {
@@ -237,7 +235,6 @@ export async function updateTradeState(params: UpdateTradeStateParams) {
maxAdverseExcursion: params.maxAdverseExcursion,
maxFavorablePrice: params.maxFavorablePrice,
maxAdversePrice: params.maxAdversePrice,
runnerTrailingPercent: params.runnerTrailingPercent,
lastUpdate: new Date().toISOString(),
}
}