feat: Implement comprehensive positions tracking system

- Real-time positions tracking with live P&L updates
- PositionsPanel component with auto-refresh every 10s
- Position creation on trade execution (DEX, Perp, Standard)
- One-click position closing functionality
- Stop Loss and Take Profit display with monitoring

- /api/trading/positions API for CRUD operations
- Real-time price updates via CoinGecko integration
- Automatic position creation on successful trades
- In-memory positions storage with P&L calculations
- Enhanced trading page layout with positions panel

- Entry price, current price, and unrealized P&L
- Percentage-based P&L calculations
- Portfolio summary with total value and total P&L
- Transaction ID tracking for audit trail
- Support for leverage positions and TP/SL orders

 Confirmed Working:
- Position created: SOL/USDC BUY 0.02 @ 68.10
- Real-time P&L: -/bin/bash.0052 (-0.15%)
- TP/SL monitoring: SL 60, TP 80
- Transaction: 5qYx7nmpgE3fHEZpjJCMtJNb1jSQVGfKhKNzJNgJ5VGV4xG2cSSpr1wtfPfbmx8zSjwHnzSgZiWsMnAWmCFQ2RVx

- Clear positions display on trading page
- Real-time updates without manual refresh
- Intuitive close buttons for quick position management
- Separate wallet holdings vs active trading positions
- Professional trading interface with P&L visualization
This commit is contained in:
mindesbunister
2025-07-14 15:59:44 +02:00
parent f1e0be8c79
commit 0d7b46fdcf
8 changed files with 637 additions and 14 deletions

View File

@@ -27,6 +27,29 @@ export async function POST(request: Request) {
console.log('Simulated trade executed:', mockTrade)
// Automatically create position for this trade
try {
const positionResponse = await fetch('http://localhost:3000/api/trading/positions', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
action: 'add',
symbol: mockTrade.symbol,
side: mockTrade.side.toUpperCase(),
amount: mockTrade.amount,
entryPrice: mockTrade.price,
txId: mockTrade.id
})
})
if (positionResponse.ok) {
const positionData = await positionResponse.json()
console.log('Position created:', positionData.position?.id)
}
} catch (error) {
console.error('Failed to create position:', error)
}
return NextResponse.json({
success: true,
trade: mockTrade,