import { EnhancedHedgingExecutor } from '../src/core/hedging/enhancedHedgingExecutor.js' import { logger } from '../src/utils/logger.js' /** * 增强对冲系统使用示例 * * 功能包括: * 1. 两个账户价格收敛管理 * 2. 基差风险监控和预警 * 3. 自动止盈止损管理 * 4. 智能收敛算法 * 5. 风险控制和紧急停止 */ async function runEnhancedHedgingExample() { console.log('\n=== 增强对冲系统示例 ===\n') try { // 1. 创建增强对冲执行器 const hedgingExecutor = new EnhancedHedgingExecutor({ executionIntervalMs: 3000, // 3秒执行间隔 enableBasisManagement: true, enableConvergenceManagement: true, enableStopLossManagement: true, enablePerformanceTracking: true, maxDailyTrades: 50, emergencyStopThreshold: -0.03, // -3% 紧急停止 riskLimits: { maxPositionSize: 0.1, // 最大0.1 BTC仓位 maxTotalExposure: 0.5, // 最大0.5 BTC总敞口 maxDailyLoss: 500, // 最大日亏损 $500 maxBasisDeviation: 100, // 最大基差偏差 $100 }, notifications: { enableSlack: false, enableEmail: false, enableWebhook: true, }, }) // 2. 设置事件监听器 setupEventListeners(hedgingExecutor) // 3. 添加交易对(两个不同账户) console.log('添加交易对...') await hedgingExecutor.addTradingPair( 'btc_hedge_pair_1', { account: process.env.PACIFICA_ACCOUNT_1 || 'demo_account_1', privateKey: process.env.PACIFICA_PRIVATE_KEY_1 || 'demo_key_1', }, { account: process.env.PACIFICA_ACCOUNT_2 || 'demo_account_2', privateKey: process.env.PACIFICA_PRIVATE_KEY_2 || 'demo_key_2', }, 'BTC-USD', { maxPositionSize: 0.05, stopLossPercent: 0.015, // 1.5% 止损 takeProfitPercent: 0.025, // 2.5% 止盈 enableTrailingStop: true, }, ) console.log('✅ 交易对添加成功') // 4. 启动增强对冲系统 console.log('\n启动增强对冲系统...') await hedgingExecutor.startEnhancedHedging() console.log('✅ 增强对冲系统已启动') // 5. 运行一段时间并展示功能 await demonstrateFeatures(hedgingExecutor) // 6. 优雅停止 console.log('\n停止增强对冲系统...') await hedgingExecutor.stopEnhancedHedging() console.log('✅ 增强对冲系统已停止') // 7. 显示最终性能指标 displayFinalMetrics(hedgingExecutor) } catch (error: any) { console.error('❌ 增强对冲示例失败:', error.message) logger.error('增强对冲示例失败', { error: error.message, stack: error.stack }) } } /** * 设置事件监听器 */ function setupEventListeners(executor: EnhancedHedgingExecutor) { console.log('设置事件监听器...') // 基差风险检测 executor.on('basisRiskDetected', alert => { console.log(`🚨 基差风险预警: ${alert.symbol} - ${alert.riskLevel} - ${alert.message}`) }) // 收敛策略执行 executor.on('convergenceStrategyExecuted', event => { console.log( `📈 收敛策略执行: ${event.pairId} - ${event.strategy.strategy} - 置信度: ${event.strategy.confidence.toFixed(2)}`, ) }) // 止损触发 executor.on('stopLossTriggered', event => { console.log( `🛑 止损触发: ${event.order.symbol} - ${event.execution.triggerType} - 执行价格: $${event.execution.executedPrice}`, ) }) // 紧急停止 executor.on('emergencyStopTriggered', event => { console.log(`🚨 紧急停止触发: ${event.reason}`) }) // 再平衡完成 executor.on('rebalanceCompleted', event => { console.log(`⚖️ 再平衡完成: ${event.pairId}`) }) // 通知 executor.on('notification', notification => { console.log(`📢 通知: ${notification.type} - ${JSON.stringify(notification.data)}`) }) console.log('✅ 事件监听器设置完成') } /** * 演示各种功能 */ async function demonstrateFeatures(executor: EnhancedHedgingExecutor) { console.log('\n=== 功能演示 ===\n') // 运行30秒,观察系统行为 const demoTime = 30000 // 30秒 const interval = 5000 // 每5秒显示一次状态 console.log(`运行${demoTime / 1000}秒,每${interval / 1000}秒显示状态...`) const startTime = Date.now() const statusInterval = setInterval(() => { displayCurrentStatus(executor) }, interval) // 模拟一些市场变化和交易 await simulateMarketConditions(executor) // 等待演示时间结束 await new Promise(resolve => setTimeout(resolve, demoTime)) clearInterval(statusInterval) console.log('\n✅ 功能演示完成') } /** * 显示当前状态 */ function displayCurrentStatus(executor: EnhancedHedgingExecutor) { const status = executor.getStatus() const metrics = status.performanceMetrics console.log('\n--- 当前状态 ---') console.log(`活跃对冲对: ${status.activePairs}`) console.log(`活跃止损单: ${status.activeStopOrders}`) console.log(`总交易次数: ${metrics.totalTrades}`) console.log(`成功交易: ${metrics.successfulTrades}`) console.log(`失败交易: ${metrics.failedTrades}`) console.log(`基差风险事件: ${metrics.basisRiskEvents}`) console.log(`止损触发: ${metrics.stopLossTriggered}`) console.log(`止盈触发: ${metrics.takeProfitTriggered}`) console.log(`总盈亏: $${metrics.totalPnl.toFixed(2)}`) console.log(`最大回撤: ${(metrics.maxDrawdown * 100).toFixed(2)}%`) if (metrics.totalTrades > 0) { const successRate = ((metrics.successfulTrades / metrics.totalTrades) * 100).toFixed(1) console.log(`成功率: ${successRate}%`) } } /** * 模拟市场条件 */ async function simulateMarketConditions(executor: EnhancedHedgingExecutor) { console.log('\n模拟市场条件变化...') // 模拟一些事件来触发系统功能 setTimeout(() => { console.log('📊 模拟基差扩大事件...') // 这里可以通过直接调用基差管理器来模拟 }, 5000) setTimeout(() => { console.log('📈 模拟价格收敛需求...') // 这里可以模拟价格偏差情况 }, 10000) setTimeout(() => { console.log('🎯 模拟止盈触发场景...') // 这里可以模拟价格变动触发止盈 }, 15000) setTimeout(() => { console.log('⚠️ 模拟风险预警场景...') // 这里可以模拟风险条件 }, 20000) } /** * 显示最终性能指标 */ function displayFinalMetrics(executor: EnhancedHedgingExecutor) { console.log('\n=== 最终性能指标 ===') const metrics = executor.getPerformanceMetrics() const runTime = (Date.now() - metrics.startTime) / 1000 console.log(`运行时间: ${runTime.toFixed(1)}秒`) console.log(`总交易次数: ${metrics.totalTrades}`) console.log(`成功交易: ${metrics.successfulTrades}`) console.log(`失败交易: ${metrics.failedTrades}`) if (metrics.totalTrades > 0) { const successRate = ((metrics.successfulTrades / metrics.totalTrades) * 100).toFixed(1) console.log(`交易成功率: ${successRate}%`) console.log(`平均每分钟交易: ${(metrics.totalTrades / (runTime / 60)).toFixed(1)}`) } console.log(`基差风险事件: ${metrics.basisRiskEvents}`) console.log(`止损触发次数: ${metrics.stopLossTriggered}`) console.log(`止盈触发次数: ${metrics.takeProfitTriggered}`) console.log(`总盈亏: $${metrics.totalPnl.toFixed(2)}`) console.log(`总手续费: $${metrics.totalFees.toFixed(2)}`) console.log(`最大回撤: ${(metrics.maxDrawdown * 100).toFixed(2)}%`) // 计算一些额外的指标 if (runTime > 0) { const hourlyReturn = metrics.totalPnl / (runTime / 3600) console.log(`每小时收益: $${hourlyReturn.toFixed(2)}`) } console.log('\n=== 系统特性总结 ===') console.log('✅ 双账户价格收敛管理 - 自动让两个账户的开仓价格逐步接近') console.log('✅ 基差监控和风险预警 - 实时监控现货期货基差变化') console.log('✅ 智能止盈止损管理 - 支持固定、追踪、分批等多种策略') console.log('✅ 自适应收敛算法 - 根据市场条件调整收敛策略') console.log('✅ 风险控制和紧急停止 - 多重风险检查和自动保护') console.log('✅ 实时性能监控 - 详细的交易和风险指标跟踪') } /** * 配置检查 */ function checkConfiguration() { console.log('检查配置...') const requiredEnvVars = [ 'PACIFICA_ACCOUNT_1', 'PACIFICA_PRIVATE_KEY_1', 'PACIFICA_ACCOUNT_2', 'PACIFICA_PRIVATE_KEY_2', ] const missingVars = requiredEnvVars.filter(varName => !process.env[varName]) if (missingVars.length > 0) { console.log('⚠️ 以下环境变量未配置,将使用演示模式:') missingVars.forEach(varName => console.log(` - ${varName}`)) console.log('\n要使用真实交易,请配置这些环境变量') } else { console.log('✅ 配置检查通过') } } /** * 使用说明 */ function printUsageInstructions() { console.log('\n=== 使用说明 ===') console.log('1. 配置环境变量:') console.log(' export PACIFICA_ACCOUNT_1=your_account_1') console.log(' export PACIFICA_PRIVATE_KEY_1=your_private_key_1') console.log(' export PACIFICA_ACCOUNT_2=your_account_2') console.log(' export PACIFICA_PRIVATE_KEY_2=your_private_key_2') console.log('') console.log('2. 可选配置代理:') console.log(' export PROXY_ENABLED=true') console.log(' export PROXY_HOST=your-proxy-server.com') console.log(' export PROXY_PORT=8080') console.log('') console.log('3. 运行示例:') console.log(' yarn ts-node examples/enhanced_hedging_example.ts') console.log('') console.log('4. 安全提醒:') console.log(' - 首次使用请在测试环境运行') console.log(' - 确保账户有足够资金覆盖保证金') console.log(' - 监控系统运行状态和风险指标') console.log(' - 了解紧急停止和手动干预方法') } // 主函数 async function main() { console.log('🚀 增强对冲系统示例启动\n') printUsageInstructions() checkConfiguration() await runEnhancedHedgingExample() console.log('\n🎉 示例运行完成') } // 运行示例 if (import.meta.url === `file://${process.argv[1]}`) { main().catch(error => { console.error('示例运行失败:', error) process.exit(1) }) } export { runEnhancedHedgingExample }