Files
trading_bot_v3/prisma/schema.prisma
mindesbunister 29d0516a07 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
2025-07-24 12:42:56 +02:00

224 lines
6.2 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
name String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
aiLearningData AILearningData[]
apiKeys ApiKey[]
automationSessions AutomationSession[]
trades Trade[]
journals TradingJournal[]
settings UserSettings?
@@map("users")
}
model ApiKey {
id String @id @default(cuid())
userId String
provider String
keyName String
encryptedKey String
isActive Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([userId, provider, keyName])
@@map("api_keys")
}
model UserSettings {
id String @id @default(cuid())
userId String @unique
autoTrading Boolean @default(false)
tradingAmount Float @default(100)
riskPercentage Float @default(2)
maxDailyTrades Int @default(5)
enableNotifications Boolean @default(true)
automationMode String @default("SIMULATION")
autoTimeframe String @default("1h")
autoSymbol String @default("SOLUSD")
autoTradingEnabled Boolean @default(false)
autoAnalysisEnabled Boolean @default(false)
maxLeverage Float @default(3.0)
stopLossPercent Float @default(2.0)
takeProfitPercent Float @default(6.0)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("user_settings")
}
model Trade {
id String @id @default(cuid())
userId String
symbol String
side String
amount Float
price Float
status String @default("PENDING")
driftTxId String?
profit Float?
fees Float?
screenshotUrl String?
aiAnalysis String?
isAutomated Boolean @default(false)
entryPrice Float?
exitPrice Float?
stopLoss Float?
takeProfit Float?
leverage Float?
timeframe String?
tradingMode String?
confidence Float?
marketSentiment String?
outcome String?
pnlPercent Float?
actualRR Float?
executionTime DateTime?
learningData Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
executedAt DateTime?
closedAt DateTime?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("trades")
}
model TradingJournal {
id String @id @default(cuid())
userId String
date DateTime @default(now())
screenshotUrl String
aiAnalysis String
marketSentiment String?
keyLevels Json?
recommendation String
confidence Float
notes String?
isAutomated Boolean @default(false)
symbol String?
timeframe String?
tradingMode String?
tradeId String?
outcome String?
actualPrice Float?
priceAtAnalysis Float?
accuracyScore Float?
executionDelay Int?
marketCondition String?
sessionId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("trading_journals")
}
model Screenshot {
id String @id @default(cuid())
url String
filename String
fileSize Int
mimeType String
metadata Json?
createdAt DateTime @default(now())
@@map("screenshots")
}
model SystemLog {
id String @id @default(cuid())
level String
message String
metadata Json?
createdAt DateTime @default(now())
@@map("system_logs")
}
model AutomationSession {
id String @id @default(cuid())
userId String
status String @default("ACTIVE")
mode String @default("SIMULATION")
symbol String
timeframe String
totalTrades Int @default(0)
successfulTrades Int @default(0)
failedTrades Int @default(0)
totalPnL Float @default(0)
totalPnLPercent Float @default(0)
winRate Float @default(0)
avgRiskReward Float @default(0)
maxDrawdown Float @default(0)
startBalance Float?
currentBalance Float?
settings Json?
lastAnalysis DateTime?
lastTrade DateTime?
nextScheduled DateTime?
errorCount Int @default(0)
lastError String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
lastAnalysisData Json?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([userId, symbol, timeframe])
@@map("automation_sessions")
}
model AILearningData {
id String @id @default(cuid())
userId String
sessionId String?
tradeId String?
analysisData Json
marketConditions Json
outcome String?
actualPrice Float?
predictedPrice Float?
confidenceScore Float?
accuracyScore Float?
timeframe String
symbol String
screenshot String?
feedbackData Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@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")
}