From 16f9b2f5e8eaa4cf222fa58d1767bbe5bdd26464 Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Sat, 19 Jul 2025 00:00:04 +0200 Subject: [PATCH] Add trading amount and leverage information to trade displays MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Enhanced API response to include tradingAmount, leverage, and positionSize for all trades - Added realistic trading examples with varying leverage (2x-5x) and amounts (50-00) - Updated automation page UI to display trading details in dedicated section - Added leverage badges and position size information for better trade transparency - Enhanced trade summary to show trading amount and leverage context - Improved trade visualization with color-coded leverage indicators Features added: - Trading Amount: Shows base capital used (50-00) - Leverage: Visual badges showing multiplier (2x-5x) - Position Size: Calculated total exposure (tradingAmount × leverage) - Enhanced trade cards with comprehensive trading parameters --- app/api/automation/analysis-details/route.js | 56 +++++++++++++++++++ app/automation/page.js | 25 ++++++++- prisma/prisma/dev.db | Bin 143360 -> 172032 bytes 3 files changed, 80 insertions(+), 1 deletion(-) diff --git a/app/api/automation/analysis-details/route.js b/app/api/automation/analysis-details/route.js index ee9b51c..443eeac 100644 --- a/app/api/automation/analysis-details/route.js +++ b/app/api/automation/analysis-details/route.js @@ -33,6 +33,9 @@ export async function GET() { id: 'demo-trade-1', side: 'BUY', amount: 1.5, + tradingAmount: 250, // Trading amount in USD + leverage: 5, // 5x leverage + positionSize: 1250, // Total position size (tradingAmount * leverage) price: 174.25, status: 'OPEN', profit: null, @@ -76,6 +79,9 @@ export async function GET() { id: 'demo-trade-2', side: 'SELL', amount: 2.04, + tradingAmount: 180, // Trading amount in USD + leverage: 3, // 3x leverage + positionSize: 540, // Total position size (tradingAmount * leverage) price: 176.88, status: 'COMPLETED', profit: 3.24, @@ -117,6 +123,9 @@ export async function GET() { id: 'demo-trade-3', side: 'BUY', amount: 1.8, + tradingAmount: 300, // Trading amount in USD + leverage: 4, // 4x leverage + positionSize: 1200, // Total position size (tradingAmount * leverage) price: 173.15, status: 'COMPLETED', profit: -1.89, @@ -153,6 +162,50 @@ export async function GET() { timeBasedExit: false, analysisInvalidated: true } + }, + { + id: 'demo-trade-4', + side: 'SELL', + amount: 1.2, + tradingAmount: 150, // Trading amount in USD + leverage: 2, // 2x leverage + positionSize: 300, // Total position size (tradingAmount * leverage) + price: 175.90, + status: 'COMPLETED', + profit: 1.86, + createdAt: new Date(Date.now() - 6 * 60 * 60 * 1000).toISOString(), // 6 hours ago + aiAnalysis: 'SELL signal with 81% confidence - Bearish momentum confirmed', + stopLoss: 177.20, + takeProfit: 174.35, + confidence: 81, + // Enhanced analysis context + triggerAnalysis: { + decision: 'SELL', + confidence: 81, + timeframe: '1h', + keySignals: ['Bearish engulfing pattern', 'Volume spike on rejection', 'RSI divergence'], + marketCondition: 'Strong bearish momentum', + riskReward: '1:1.2', + invalidationLevel: 177.50 + }, + // Exit metrics + exitMetrics: { + exitPrice: 174.35, + exitReason: 'Take profit hit', + timeInTrade: '52 minutes', + maxUnrealizedPnL: 2.10, + maxDrawdown: -0.42, + analysisAccuracy: 'Good - TP hit with minor slippage', + actualRiskReward: '1:1.2' + }, + // Exit conditions + exitConditions: { + stopLossHit: false, + takeProfitHit: true, + manualExit: false, + timeBasedExit: false, + analysisInvalidated: false + } } ] @@ -268,6 +321,9 @@ export async function GET() { type: trade.type || 'MARKET', side: trade.side, amount: trade.amount, + tradingAmount: trade.tradingAmount || 100, // Default to $100 if not specified + leverage: trade.leverage || 1, // Default to 1x leverage if not specified + positionSize: trade.positionSize || (trade.tradingAmount || 100) * (trade.leverage || 1), price: trade.price, status: trade.status, pnl: trade.profit, diff --git a/app/automation/page.js b/app/automation/page.js index 7e69e90..25db910 100644 --- a/app/automation/page.js +++ b/app/automation/page.js @@ -589,6 +589,7 @@ export default function AutomationPage() { {trade.side} {trade.amount} + {trade.leverage}x + {/* Trading Details */} +
+
+
+ Trading Amount: + ${trade.tradingAmount} +
+
+ Leverage: + {trade.leverage}x +
+
+ Position Size: + ${trade.positionSize} +
+
+ Entry Price: + ${trade.entryPrice.toFixed(2)} +
+
+
+ {/* Analysis Context */} {trade.triggerAnalysis && (
@@ -693,7 +716,7 @@ export default function AutomationPage() { {/* Trade Summary */}
- {trade.duration} + {trade.duration} | ${trade.tradingAmount} @ {trade.leverage}x
diff --git a/prisma/prisma/dev.db b/prisma/prisma/dev.db index e8066dc2767ea3e254e94662d98e2f7dbc15e16e..be905c41ac5ba9bfb8837838ca697395c11af070 100644 GIT binary patch delta 4148 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 delta 194 zcmZoTz}4`8V}dkmA_D`1@B>itqF{}xuQv?RT*Xm1_qYdg$7kgMrB536{bnk zBk~y?r$5eRjN^~fJ?r7`@q+VK|S4EZ?SbKCdjF@6-lVaSns zMh6i#{zpJN8I<{d^MB+2$p41_Isc>0f&%9`w?B_${LMQ3Q9q-S5Ies<1OH?Gqx{SH cJNdKuefjk_3o1zRPmi6)$g$mgKI6#=00+ZB6aWAK