#!/usr/bin/env tsx import { PacificaAPIService } from '../src/services/PacificaAPIService'; import { readFileSync } from 'fs'; interface AccountConfig { name: string; privateKey: string; publicKey: string; } async function checkPositions() { console.log('📊 检查账户状态和持仓...\n'); // 加载账户配置 const accountsConfig: AccountConfig[] = JSON.parse( readFileSync('./config/accounts.json', 'utf-8') ); for (const accountConfig of accountsConfig) { console.log(`\n${'='.repeat(60)}`); console.log(`📋 账户: ${accountConfig.name}`); console.log(`🔑 公钥: ${accountConfig.publicKey}`); console.log(`${'='.repeat(60)}\n`); const apiService = new PacificaAPIService(accountConfig.privateKey); try { // 获取账户信息 const accountInfo = await apiService.getAccountInfo(); console.log('💰 账户信息:'); console.log(` 余额 (Balance): ${accountInfo.balance} USDC`); console.log(` 账户权益 (Equity): ${accountInfo.account_equity} USDC`); console.log(` 已使用保证金: ${accountInfo.total_margin_used} USDC`); console.log(` 可用余额: ${accountInfo.available_to_spend} USDC`); console.log(` 待处理余额: ${accountInfo.pending_balance} USDC`); console.log(` 可提现余额: ${accountInfo.available_to_withdraw} USDC`); console.log(` 手续费等级: ${accountInfo.fee_level}`); // 计算保证金使用率 const equity = parseFloat(accountInfo.account_equity); const marginUsed = parseFloat(accountInfo.total_margin_used); const marginUsagePercent = equity > 0 ? (marginUsed / equity * 100).toFixed(2) : 'N/A'; console.log(` 保证金使用率: ${marginUsagePercent}%`); // 获取持仓信息 const positions = await apiService.getPositions(); console.log(`\n📈 持仓数量: ${positions.length}`); if (positions.length > 0) { console.log('\n持仓详情:'); for (const pos of positions) { const pnl = parseFloat(pos.funding); const pnlSign = pnl >= 0 ? '+' : ''; console.log(`\n ${pos.symbol}:`); console.log(` 方向: ${pos.side === 'bid' ? '多单 (Long)' : '空单 (Short)'}`); console.log(` 数量: ${pos.amount}`); console.log(` 入场价: ${pos.entry_price}`); console.log(` 保证金: ${pos.margin} USDC`); console.log(` 未实现盈亏: ${pnlSign}${pnl} USDC`); console.log(` 隔离保证金: ${pos.isolated ? '是' : '否'}`); } } // 获取开放订单 const openOrders = await apiService.getOpenOrders(); console.log(`\n📋 开放订单数量: ${openOrders.length}`); if (openOrders.length > 0) { console.log('\n开放订单详情:'); for (const order of openOrders) { console.log(`\n 订单 #${order.order_id}:`); console.log(` 交易对: ${order.symbol}`); console.log(` 方向: ${order.side === 'bid' ? '买入' : '卖出'}`); console.log(` 类型: ${order.order_type}`); console.log(` 数量: ${order.amount}`); console.log(` 价格: ${order.initial_price || order.average_filled_price}`); console.log(` 状态: ${order.order_status}`); console.log(` 已成交: ${order.filled_amount}`); console.log(` 只减仓: ${order.reduce_only ? '是' : '否'}`); } } } catch (error) { console.error(`❌ 获取账户信息失败:`, error instanceof Error ? error.message : error); } // 延迟避免限流 await new Promise(resolve => setTimeout(resolve, 2000)); } console.log(`\n${'='.repeat(60)}`); console.log('✅ 检查完成'); console.log(`${'='.repeat(60)}\n`); } checkPositions().catch(console.error);