CRITICAL: Fix leveraged trading routing

- Add leverage detection in executeTrade function to route correctly
- Leveraged positions (leverage > 1) now route to execute-perp API (Drift Protocol)
- Spot trades (leverage = 1) continue to use execute-dex API (Jupiter DEX)
- Enhanced success messages to distinguish between spot trades and leveraged positions
- Fixes issue where 5x leveraged positions were incorrectly executed as spot swaps
- Added proper console logging for debugging trade routing
This commit is contained in:
mindesbunister
2025-07-16 16:43:45 +02:00
parent bd04e0b6a8
commit b6c19c100e

View File

@@ -488,8 +488,17 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP
// Trade execution API call
const executeTrade = async (tradeData: any) => {
try {
// Use real DEX trading for manual trades
const response = await fetch('/api/trading/execute-dex', {
// Determine if this is a leveraged position or spot trade
const leverage = parseFloat(tradeData.leverage) || 1
const isLeveraged = leverage > 1
// Route to appropriate API based on leverage
const apiEndpoint = isLeveraged ? '/api/trading/execute-perp' : '/api/trading/execute-dex'
const tradingMode = isLeveraged ? 'PERP' : 'SPOT'
console.log(`🎯 Executing ${tradingMode} trade with ${leverage}x leverage via ${apiEndpoint}`)
const response = await fetch(apiEndpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -497,9 +506,11 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP
side: 'BUY', // Could be derived from analysis
amount: parseFloat(tradeData.positionSize) || parseFloat(tradeData.size),
amountUSD: parseFloat(tradeData.amountUSD || tradeData.positionSize || tradeData.size),
leverage: leverage,
stopLoss: parseFloat(tradeData.sl),
takeProfit: parseFloat(tradeData.tp1), // Use TP1 as primary target
useRealDEX: true, // Enable real trading for manual execution
tradingMode: tradingMode,
tradingPair: `${tradeData.symbol || symbol}/USDC`,
quickSwap: false
})
@@ -508,17 +519,23 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP
const result = await response.json()
if (response.ok && result.success) {
// Show detailed success message for DEX execution
let message = `✅ Real DEX Trade executed successfully!\n\n`
// Show detailed success message based on trading type
const leverage = parseFloat(tradeData.leverage) || 1
const isLeveraged = leverage > 1
const tradeType = isLeveraged ? 'Leveraged Position' : 'Spot Trade'
const platform = isLeveraged ? 'Drift Protocol' : 'Jupiter DEX'
let message = `${tradeType} executed successfully!\n\n`
message += `📊 Transaction ID: ${result.trade?.txId || result.txId}\n`
message += `💰 Symbol: ${tradeData.symbol || symbol}\n`
message += `📈 Size: ${tradeData.positionSize || tradeData.size}\n`
message += `🏪 DEX: ${result.trade?.dex || 'Jupiter'}\n`
message += `📈 Size: ${tradeData.positionSize || tradeData.size} USDC\n`
if (isLeveraged) message += `⚡ Leverage: ${leverage}x\n`
message += `🏪 Platform: ${platform}\n`
if (tradeData.sl) message += `🛑 Stop Loss: $${tradeData.sl}\n`
if (tradeData.tp1) message += `🎯 Take Profit: $${tradeData.tp1}\n`
if (result.trade?.monitoring) {
if (result.trade?.monitoring || result.position) {
message += `\n🔄 Position monitoring: ACTIVE`
}