- Added stop loss and take profit parameters to TradeParams interface - Implemented conditional order placement in executeTrade method - Added ZERO import and closePosition method to DriftTradingService - Enhanced trade API to handle stop loss/take profit parameters - Added position fetching and closing functionality to AdvancedTradingPanel - Added open positions display with close buttons - Implemented risk management calculations and UI - Added conditional order tracking in TradeResult interface
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { NextResponse } from 'next/server'
|
|
import { driftTradingService } from '../../../../lib/drift-trading'
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const { symbol, amount } = await request.json()
|
|
|
|
console.log(`🔒 Close position request: ${amount || 'ALL'} ${symbol}`)
|
|
|
|
// Validate inputs
|
|
if (!symbol) {
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Symbol is required' },
|
|
{ status: 400 }
|
|
)
|
|
}
|
|
|
|
// Execute position close
|
|
const result = await driftTradingService.closePosition(symbol, amount)
|
|
|
|
if (result.success) {
|
|
console.log(`✅ Position closed successfully: ${result.txId}`)
|
|
return NextResponse.json({
|
|
success: true,
|
|
txId: result.txId,
|
|
message: `Position in ${symbol} closed successfully`
|
|
})
|
|
} else {
|
|
console.error(`❌ Failed to close position: ${result.error}`)
|
|
return NextResponse.json(
|
|
{ success: false, error: result.error },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
|
|
} catch (error: any) {
|
|
console.error('❌ Close position API error:', error)
|
|
return NextResponse.json(
|
|
{
|
|
success: false,
|
|
error: error.message || 'Failed to close position'
|
|
},
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|