Files
trading_bot_v3/app/api/drift/sync-trades/route.ts
mindesbunister bf9022b699 Fix trading history: implement proper P&L tracking for closed positions
- Fixed trading history not showing closed positions with positive P&L
- Implemented multi-source trading history fetching (SDK, Data API, DLOB, local DB)
- Added proper P&L calculation using unrealized PnL from Drift positions
- Enhanced TradingHistory component with error handling and sync functionality
- Added manual sync button and better status messages
- Created /api/drift/sync-trades endpoint for manual trade synchronization
- Fixed database integration to properly store and retrieve trades with P&L
- Added comprehensive fallback mechanisms for data fetching
- Improved error messages and user feedback
- Added TRADING_HISTORY_IMPROVEMENTS.md documentation

This addresses the issue where recently closed positions with positive P&L
were not appearing in the trading history section.
2025-07-13 10:18:56 +02:00

45 lines
1.4 KiB
TypeScript

import { NextResponse } from 'next/server'
import { driftTradingService } from '../../../../lib/drift-trading'
export async function POST(request: Request) {
try {
console.log('🔄 API: Manually syncing trades with Drift...')
// Get current positions to check for any changes
const positions = await driftTradingService.getPositions()
// Check for recent closures that might not be in history yet
const recentClosures = await driftTradingService.getRecentClosures(24)
// Get existing trading history
const existingTrades = await driftTradingService.getTradingHistory(100)
console.log(`📊 Found ${positions.length} active positions`)
console.log(`📊 Found ${recentClosures.length} recent closures`)
console.log(`📊 Found ${existingTrades.length} existing trades`)
return NextResponse.json({
success: true,
message: 'Trade sync completed',
data: {
activePositions: positions.length,
recentClosures: recentClosures.length,
existingTrades: existingTrades.length,
positions: positions,
closures: recentClosures
}
})
} catch (error: any) {
console.error('❌ API: Error syncing trades:', error)
return NextResponse.json(
{
success: false,
error: error.message,
message: 'Failed to sync trades. Please try again.'
},
{ status: 500 }
)
}
}