feat: fix AI Trading Analysis panel to show real successful trade data
Fixed analysis-details API to use exact same logic as position-history Now shows successful .13 WIN trade instead of old mock data Successful trade sync script working correctly Position monitor shows active SHORT position with proper stop-loss Next: Complete risk management system integration
This commit is contained in:
121
sync-successful-trade.js
Normal file
121
sync-successful-trade.js
Normal file
@@ -0,0 +1,121 @@
|
||||
// Sync successful Drift trades to AI learning system
|
||||
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function syncSuccessfulTrade() {
|
||||
try {
|
||||
console.log('🔄 Syncing successful trade to AI learning system...');
|
||||
|
||||
// Get the successful trade from Drift position history
|
||||
const response = await fetch('http://localhost:9001/api/drift/position-history');
|
||||
const data = await response.json();
|
||||
|
||||
if (!data.success || !data.trades.length) {
|
||||
throw new Error('No trades found in Drift history');
|
||||
}
|
||||
|
||||
const trade = data.trades[0]; // Most recent successful trade
|
||||
console.log('📊 Found successful trade:', {
|
||||
id: trade.id,
|
||||
symbol: trade.symbol,
|
||||
side: trade.side,
|
||||
pnl: trade.pnl,
|
||||
outcome: trade.outcome
|
||||
});
|
||||
|
||||
// Check if this trade is already in our database
|
||||
const existingTrade = await prisma.trades.findUnique({
|
||||
where: { id: trade.id }
|
||||
});
|
||||
|
||||
if (existingTrade) {
|
||||
console.log('✅ Trade already exists in database');
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the successful trade to our database
|
||||
const newTrade = await prisma.trades.create({
|
||||
data: {
|
||||
id: trade.id,
|
||||
userId: 'default-user',
|
||||
symbol: trade.symbol,
|
||||
side: trade.side,
|
||||
amount: trade.amount,
|
||||
price: trade.entryPrice,
|
||||
entryPrice: trade.entryPrice,
|
||||
exitPrice: trade.exitPrice,
|
||||
leverage: trade.leverage || 1,
|
||||
stopLoss: trade.stopLoss,
|
||||
takeProfit: trade.takeProfit,
|
||||
status: 'COMPLETED',
|
||||
profit: trade.pnl,
|
||||
createdAt: new Date(trade.entryTime),
|
||||
closedAt: new Date(trade.exitTime),
|
||||
confidence: trade.confidence || 85,
|
||||
txId: trade.txId,
|
||||
mode: 'LIVE' // This was a real trade
|
||||
}
|
||||
});
|
||||
|
||||
console.log('✅ Successfully added trade to database:', newTrade.id);
|
||||
|
||||
// Also record this as an AI learning decision outcome
|
||||
try {
|
||||
const { SimplifiedStopLossLearner } = await import('../lib/simplified-stop-loss-learner-fixed.js');
|
||||
const learner = new SimplifiedStopLossLearner();
|
||||
|
||||
// Create a decision ID for this trade
|
||||
const decisionId = `sync_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
||||
|
||||
// Record the decision first
|
||||
await learner.recordDecision({
|
||||
id: decisionId,
|
||||
symbol: trade.symbol,
|
||||
recommendation: trade.side,
|
||||
confidence: trade.confidence || 85,
|
||||
stopLoss: trade.stopLoss || (trade.side === 'BUY' ? trade.entryPrice * 0.98 : trade.entryPrice * 1.02),
|
||||
takeProfit: trade.takeProfit || (trade.side === 'BUY' ? trade.entryPrice * 1.04 : trade.entryPrice * 0.96),
|
||||
entryPrice: trade.entryPrice,
|
||||
marketConditions: {
|
||||
timeframe: ['1h', '4h'],
|
||||
analysis: `Successful ${trade.side} trade - ${trade.outcome}`
|
||||
},
|
||||
timestamp: trade.entryTime
|
||||
});
|
||||
|
||||
// Then record the successful outcome
|
||||
await learner.assessDecisionOutcome({
|
||||
decisionId: decisionId,
|
||||
outcome: 'WIN',
|
||||
actualPnL: trade.pnl,
|
||||
timestamp: trade.exitTime,
|
||||
positionInfo: {
|
||||
entryPrice: trade.entryPrice,
|
||||
exitPrice: trade.exitPrice,
|
||||
side: trade.side,
|
||||
pnl: trade.pnl
|
||||
}
|
||||
});
|
||||
|
||||
console.log('🧠 Successfully recorded in AI learning system:', decisionId);
|
||||
|
||||
// Generate updated learning report
|
||||
const report = await learner.generateLearningReport();
|
||||
console.log('📊 Updated learning statistics:', report.summary);
|
||||
|
||||
} catch (learningError) {
|
||||
console.warn('⚠️ Could not add to AI learning system:', learningError.message);
|
||||
}
|
||||
|
||||
console.log('✅ Trade sync completed successfully!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Error syncing trade:', error);
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
// Run the sync
|
||||
syncSuccessfulTrade();
|
||||
Reference in New Issue
Block a user