diff --git a/prisma/prisma/dev.db b/prisma/prisma/dev.db index 03b8bd5..d5cc71c 100644 Binary files a/prisma/prisma/dev.db and b/prisma/prisma/dev.db differ diff --git a/test-leverage-automation.js b/test-leverage-automation.js new file mode 100644 index 0000000..aad31d9 --- /dev/null +++ b/test-leverage-automation.js @@ -0,0 +1,107 @@ +/** + * Test the AI leverage calculation in automation + */ + +async function testLeverageAutomation() { + console.log('๐Ÿงช Testing AI Leverage Automation Integration...\n'); + + try { + // Import the simple automation service + const SimpleAutomation = require('./lib/simple-automation.js').default; + + // Create automation instance + const automation = new SimpleAutomation(); + + // Mock configuration + automation.config = { + symbol: 'SOLUSD', + tradingAmount: 49, + enableTrading: true + }; + + // Mock analysis with realistic trade data + const mockAnalysis = { + recommendation: 'BUY', + confidence: 75, + entry: { price: 178 }, + stopLoss: 165, + takeProfit: 185, + currentPrice: 178 + }; + + console.log('๐Ÿ“Š Mock Analysis:', mockAnalysis); + console.log(''); + + // Test the trade execution logic manually + // This should trigger the AI leverage calculation + console.log('๐ŸŽฏ Testing AI leverage calculation within automation...'); + + // Simulate the executeTrade method logic + const side = 'BUY'; + const stopLoss = 165; + const takeProfit = 185; + + console.log(`๐ŸŽฏ Trade levels - SL: ${stopLoss}, TP: ${takeProfit}`); + + // Import and test AI Leverage Calculator + const { AILeverageCalculator } = await import('./lib/ai-leverage-calculator.js'); + if (AILeverageCalculator && stopLoss) { + const currentPrice = mockAnalysis.entry?.price || mockAnalysis.currentPrice || 178; + + // Get real account data + const baseUrl = 'http://localhost:9001'; + const balanceResponse = await fetch(`${baseUrl}/api/drift/balance`); + const balanceData = await balanceResponse.json(); + + let accountValue = 49; + let availableBalance = 49; + + if (balanceData.success) { + accountValue = balanceData.accountValue; + availableBalance = balanceData.availableBalance; + console.log(`๐Ÿ’ฐ Real account data: $${accountValue.toFixed(2)} total, $${availableBalance.toFixed(2)} available`); + } + + console.log(`๐Ÿงฎ Calculating optimal leverage: Entry=$${currentPrice}, StopLoss=$${stopLoss}`); + + const leverageResult = AILeverageCalculator.calculateOptimalLeverage({ + accountValue, + availableBalance, + entryPrice: currentPrice, + stopLossPrice: stopLoss, + side: side === 'BUY' ? 'long' : 'short', + maxLeverageAllowed: 10, + safetyBuffer: 0.10 + }); + + const optimalLeverage = leverageResult.recommendedLeverage; + console.log(`๐ŸŽฏ AI Calculated Leverage: ${optimalLeverage.toFixed(1)}x (Risk: ${leverageResult.riskAssessment})`); + console.log(`๐Ÿ“Š Leverage Details: ${leverageResult.reasoning}`); + + // Create trade payload + const tradePayload = { + symbol: 'SOLUSD', + side: side, + amount: 49, + leverage: optimalLeverage, + stopLoss: stopLoss, + takeProfit: takeProfit, + useRealDEX: true, + analysis: mockAnalysis + }; + + console.log('\n๐Ÿ“Š TRADE PAYLOAD:', tradePayload); + console.log('\nโœ… AI Leverage calculation working correctly!'); + console.log(`๐Ÿ’ก Instead of 1x leverage, AI calculated ${optimalLeverage.toFixed(1)}x for optimal risk/reward`); + + } else { + console.error('โŒ AI Leverage Calculator not available'); + } + + } catch (error) { + console.error('โŒ Test failed:', error); + } +} + +// Run the test +testLeverageAutomation().catch(console.error); diff --git a/test-leverage-scenarios.js b/test-leverage-scenarios.js new file mode 100644 index 0000000..7302ede --- /dev/null +++ b/test-leverage-scenarios.js @@ -0,0 +1,79 @@ +/** + * Test AI leverage calculation standalone + */ + +async function testLeverageCalculation() { + console.log('๐Ÿงช Testing AI Leverage Calculation...\n'); + + try { + // Get real account balance + const baseUrl = 'http://localhost:9001'; + const balanceResponse = await fetch(`${baseUrl}/api/drift/balance`); + const balanceData = await balanceResponse.json(); + + console.log('๐Ÿ’ฐ Account Balance Data:', balanceData); + + if (!balanceData.success) { + throw new Error('Failed to get account balance'); + } + + const accountValue = balanceData.accountValue; + const availableBalance = balanceData.availableBalance; + + // Import AI Leverage Calculator + const { AILeverageCalculator } = await import('./lib/ai-leverage-calculator.js'); + + // Test scenarios based on recent automation trades + const scenarios = [ + { + name: 'BUY Scenario (Entry: $178, SL: $165)', + entryPrice: 178, + stopLossPrice: 165, + side: 'long' + }, + { + name: 'SELL Scenario (Entry: $178, SL: $185)', + entryPrice: 178, + stopLossPrice: 185, + side: 'short' + }, + { + name: 'Tight SL Scenario (Entry: $178, SL: $175)', + entryPrice: 178, + stopLossPrice: 175, + side: 'long' + } + ]; + + console.log(`๐Ÿ“Š Testing with Account: $${accountValue.toFixed(2)} total, $${availableBalance.toFixed(2)} available\n`); + + scenarios.forEach((scenario, index) => { + console.log(`${index + 1}. ${scenario.name}`); + + const leverageResult = AILeverageCalculator.calculateOptimalLeverage({ + accountValue, + availableBalance, + entryPrice: scenario.entryPrice, + stopLossPrice: scenario.stopLossPrice, + side: scenario.side, + maxLeverageAllowed: 10, + safetyBuffer: 0.10 + }); + + console.log(` ๐ŸŽฏ Recommended: ${leverageResult.recommendedLeverage.toFixed(1)}x leverage`); + console.log(` ๐Ÿ’ฐ Position Size: $${leverageResult.positionSize.toFixed(2)}`); + console.log(` ๐Ÿ›ก๏ธ Liquidation: $${leverageResult.liquidationPrice.toFixed(2)}`); + console.log(` โš–๏ธ Risk: ${leverageResult.riskAssessment}`); + console.log(` ๐Ÿ“ Reasoning: ${leverageResult.reasoning}\n`); + }); + + console.log('โœ… AI Leverage Calculator is working correctly!'); + console.log('โŒ The issue is that automation is not calling this calculator'); + + } catch (error) { + console.error('โŒ Test failed:', error); + } +} + +// Run the test +testLeverageCalculation().catch(console.error);