| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env tsx
- /**
- * 测试账户仓位API
- */
- import { Config, SmartAccountDiscovery } from './src/config/simpleEnv.js'
- import { PacificaProxyClient } from './src/exchanges/pacifica/PacificaProxyClient.js'
- async function testPositions() {
- console.log('🧪 测试账户仓位API')
- try {
- const accounts = SmartAccountDiscovery.discoverPacifica()
- if (accounts.length === 0) {
- console.log('❌ 未发现Pacifica账户')
- return
- }
- for (let i = 0; i < Math.min(accounts.length, 2); i++) {
- const account = accounts[i]
- console.log(`\n✅ 测试账户 ${i + 1}: ${account.account.substring(0, 8)}...`)
- const client = new PacificaProxyClient({
- account: account.account,
- privateKey: account.privateKey,
- })
- // 获取仓位信息
- console.log('📊 获取仓位信息...')
- const positionsResult = await client.getPositions(account.account)
- console.log('🔍 仓位API原始响应:')
- console.log('Success:', positionsResult.success)
- console.log('Error:', positionsResult.error)
- console.log('Data type:', Array.isArray(positionsResult.data) ? 'Array' : typeof positionsResult.data)
- console.log('Data length:', Array.isArray(positionsResult.data) ? positionsResult.data.length : 'N/A')
- if (positionsResult.data && Array.isArray(positionsResult.data)) {
- console.log('\n💰 仓位详情:')
- console.log('完整仓位数据:')
- console.log(JSON.stringify(positionsResult.data, null, 2))
- let totalNetPosition = 0
- positionsResult.data.forEach((position: any, index: number) => {
- console.log(`\n仓位 ${index + 1} 所有字段:`)
- Object.keys(position).forEach(key => {
- console.log(` ${key}: ${position[key]}`)
- })
- if (position.symbol && position.symbol.includes('BTC')) {
- // 尝试不同的字段名称
- const size = parseFloat(position.size || position.amount || position.quantity || '0')
- const side = position.side
- console.log(` 解析结果: size=${size}, side=${side}`)
- if (side === 'bid' || side === 'long') {
- totalNetPosition += size
- } else if (side === 'ask' || side === 'short') {
- totalNetPosition -= size
- }
- }
- })
- console.log(`\n🎯 计算的总净仓位: ${totalNetPosition.toFixed(4)} BTC`)
- } else {
- console.log('Full response:', JSON.stringify(positionsResult, null, 2))
- }
- // 获取余额信息作为对比
- console.log('\n💵 获取余额信息...')
- const balanceResult = await client.getBalances(account.account)
- if (balanceResult.data) {
- console.log('权益:', balanceResult.data.account_equity)
- console.log('可用:', balanceResult.data.available_to_spend)
- console.log('仓位数:', balanceResult.data.positions_count)
- }
- }
- } catch (error: any) {
- console.log('❌ 测试失败:', error.message)
- if (error.stack) {
- console.log('Stack:', error.stack)
- }
- }
- }
- // 运行测试
- if (import.meta.url === `file://${process.argv[1]}`) {
- testPositions()
- }
|