| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- 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 }
|