Files
trading_bot_v3/sync-successful-trade.js
mindesbunister 8b7c8a3cca 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
2025-07-28 21:09:04 +02:00

122 lines
3.9 KiB
JavaScript

// 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();