feat: implement AI-driven DCA (Dollar Cost Averaging) system

AI-powered DCA manager with sophisticated reversal detection
 Multi-factor analysis: price movements, RSI, support/resistance, 24h trends
 Real example: SOL position analysis shows 5.2:1 risk/reward improvement

 lib/ai-dca-manager.ts - Complete DCA analysis engine with risk management
 Intelligent scaling: adds to positions when AI detects 50%+ reversal confidence
 Account-aware: uses up to 50% available balance with conservative 3x leverage
 Dynamic SL/TP: adjusts stop loss and take profit for new average position

 lib/automation-service-simple.ts - DCA monitoring in main trading cycle
 prisma/schema.prisma - DCARecord model for comprehensive tracking
 Checks DCA opportunities before new trade analysis (priority system)

 test-ai-dca-simple.js - Real SOL position test from screenshot data
 Entry: 85.98, Current: 83.87 (-1.13% underwater)
 AI recommendation: 1.08 SOL DCA → 4.91 profit potential
 Risk level: LOW with 407% liquidation safety margin

 LOGIC
 Price movement analysis: 1-10% against position optimal for DCA
 Market sentiment: 24h trends must align with DCA direction
 Technical indicators: RSI oversold (<35) for longs, overbought (>65) for shorts
 Support/resistance: proximity to key levels increases confidence
 Risk management: respects leverage limits and liquidation distances

 Complete error handling and fallback mechanisms
 Database persistence for DCA tracking and performance analysis
 Seamless integration with existing AI leverage calculator
 Real-time market data integration for accurate decision making
This commit is contained in:
mindesbunister
2025-07-24 12:42:56 +02:00
parent 221baf3baa
commit 29d0516a07
8 changed files with 1674 additions and 7 deletions

View File

@@ -204,3 +204,20 @@ model AILearningData {
@@map("ai_learning_data")
}
model DCARecord {
id String @id @default(cuid())
tradeId String
dcaAmount Float
dcaPrice Float
newAveragePrice Float
newStopLoss Float?
newTakeProfit Float?
newLeverage Float?
confidence Float?
reasoning String?
riskAssessment String?
createdAt DateTime @default(now())
@@map("dca_records")
}