New Features: - 🔍 ANALYZE button to generate AI reasoning for existing positions - Retroactive AI analysis API endpoint for positions opened outside automation - Enhanced reasoning display with RETROACTIVE indicator - Smart position analysis that handles missing stop loss data - /api/automation/analyze-position endpoint for retroactive analysis - analyzeExistingPosition() function in automation-v2 UI - Automatic estimation of stop loss when not visible in position data - Enhanced AI reasoning panel with retroactive analysis support - Analyzes entry strategy, risk management, and leverage calculations - Generates detailed AI reasoning for existing positions - Shows estimated vs actual stop loss levels - Calculates risk/reward ratios and leverage estimates - Displays position status (profitable/underwater) with safety metrics - RETROACTIVE badge for analyzed existing positions - Blue 🔍 ANALYZE button in automation controls - Enhanced reasoning display with position-specific insights - Comprehensive execution details with estimated vs actual data Now users can see AI reasoning for any existing position, not just new automation trades!
59 lines
2.5 KiB
JavaScript
59 lines
2.5 KiB
JavaScript
// Test the position analysis functionality
|
||
|
||
async function testPositionAnalysis() {
|
||
console.log('🔍 Testing Position Analysis Functionality...\n');
|
||
|
||
try {
|
||
// Get current position data
|
||
console.log('📊 Fetching current position...');
|
||
const positionResponse = await fetch('http://localhost:9001/api/automation/position-monitor');
|
||
const positionData = await positionResponse.json();
|
||
|
||
if (positionData.success && positionData.monitor.hasPosition) {
|
||
console.log('✅ Position found:', positionData.monitor.position);
|
||
|
||
// Analyze the position
|
||
console.log('\n🧠 Generating AI analysis...');
|
||
const analysisResponse = await fetch('http://localhost:9001/api/automation/analyze-position', {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json' },
|
||
body: JSON.stringify({
|
||
action: 'analyze_existing_position',
|
||
positionData: positionData.monitor.position
|
||
})
|
||
});
|
||
|
||
const analysisData = await analysisResponse.json();
|
||
|
||
if (analysisData.success) {
|
||
console.log('\n🎯 AI Analysis Generated:');
|
||
console.log(`Recommendation: ${analysisData.decision.recommendation}`);
|
||
console.log(`Confidence: ${analysisData.decision.confidence}%`);
|
||
console.log(`Retroactive: ${analysisData.decision.isRetrospective}`);
|
||
console.log('\n📝 Reasoning Preview:');
|
||
console.log(analysisData.decision.reasoning.substring(0, 200) + '...');
|
||
|
||
console.log('\n💰 Execution Details:');
|
||
console.log(`Side: ${analysisData.decision.executionDetails.side}`);
|
||
console.log(`Amount: $${analysisData.decision.executionDetails.amount}`);
|
||
console.log(`Leverage: ${analysisData.decision.executionDetails.leverage}x`);
|
||
console.log(`Entry: $${analysisData.decision.executionDetails.currentPrice}`);
|
||
console.log(`Stop Loss: $${analysisData.decision.executionDetails.stopLoss}`);
|
||
console.log(`Take Profit: $${analysisData.decision.executionDetails.takeProfit.toFixed(2)}`);
|
||
|
||
console.log('\n✅ Position analysis test completed successfully!');
|
||
console.log('📱 Now you can use the "🔍 ANALYZE" button in the UI to see this analysis.');
|
||
} else {
|
||
console.error('❌ Analysis failed:', analysisData.error);
|
||
}
|
||
} else {
|
||
console.log('ℹ️ No position found to analyze');
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('❌ Test error:', error.message);
|
||
}
|
||
}
|
||
|
||
testPositionAnalysis().catch(console.error);
|