control_plane_demo.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * 控制平面演示脚本
  3. * 展示多交易所 Delta 中性控制平面的核心功能
  4. */
  5. import { ControlPlaneService } from '../src/services/ControlPlaneService.js'
  6. import { ExchangeAccountManager } from '../src/models/ExchangeAccount.js'
  7. import { RiskEnvelopeManager } from '../src/models/RiskEnvelope.js'
  8. import { MarketDataFeedManager } from '../src/models/MarketDataFeed.js'
  9. import { StrategyModuleManager } from '../src/models/StrategyModule.js'
  10. import { MonitoringEventManager } from '../src/models/MonitoringEvent.js'
  11. import { AccountManager } from '../src/modules/account/AccountManager.js'
  12. import { CacheManager } from '../src/modules/cache/CacheManager.js'
  13. import { logger } from '../src/utils/logger.js'
  14. async function main() {
  15. logger.info('🚀 启动控制平面演示')
  16. try {
  17. // 1. 初始化管理器
  18. const exchangeAccountManager = new ExchangeAccountManager()
  19. const riskManager = new RiskEnvelopeManager()
  20. const marketDataFeedManager = new MarketDataFeedManager()
  21. const strategyModuleManager = new StrategyModuleManager()
  22. const monitoringManager = new MonitoringEventManager()
  23. const cacheManager = new CacheManager()
  24. const accountManager = new AccountManager(cacheManager)
  25. // 2. 创建控制平面服务
  26. const controlPlane = new ControlPlaneService(
  27. accountManager,
  28. exchangeAccountManager,
  29. riskManager,
  30. marketDataFeedManager,
  31. strategyModuleManager,
  32. monitoringManager
  33. )
  34. // 3. 初始化控制平面
  35. await controlPlane.initialize()
  36. await controlPlane.start()
  37. logger.info('✅ 控制平面服务启动成功')
  38. // 4. 演示场景1: 账户同步
  39. logger.info('📊 演示场景1: 账户同步')
  40. const syncResult = await controlPlane.syncAccounts()
  41. logger.info(`账户同步结果: ${syncResult.results?.length || 0} 个账户同步成功`)
  42. // 5. 演示场景2: 创建策略模块
  43. logger.info('🎯 演示场景2: 创建策略模块')
  44. const strategyResult = await controlPlane.createStrategyModule({
  45. name: '演示策略',
  46. type: 'market-making',
  47. configSchema: {
  48. type: 'object',
  49. properties: {
  50. spread: { type: 'number', default: 0.001 },
  51. volume: { type: 'number', default: 0.01 }
  52. }
  53. }
  54. })
  55. logger.info(`策略模块创建成功: ${strategyResult.moduleId}`)
  56. // 6. 演示场景3: 对冲执行
  57. logger.info('⚖️ 演示场景3: 对冲执行')
  58. const hedgeResult = await controlPlane.executeHedge({
  59. primaryAccountId: 'demo-account-1',
  60. hedgeAccountId: 'demo-account-2',
  61. deltaBefore: 0.005,
  62. targetDelta: 0.001,
  63. triggerReason: 'delta'
  64. })
  65. logger.info(`对冲执行结果: ${hedgeResult.status}`)
  66. // 7. 获取系统状态
  67. logger.info('📈 系统状态概览')
  68. const systemStatus = controlPlane.getSystemStatus()
  69. logger.info('系统状态:', {
  70. 控制平面: systemStatus.controlPlane.status,
  71. 账户数量: systemStatus.accounts.total,
  72. 活跃账户: systemStatus.accounts.active,
  73. 风险警报: systemStatus.risk.activeAlerts,
  74. 市场数据源: systemStatus.marketData.totalFeeds,
  75. 策略模块: systemStatus.strategies.length
  76. })
  77. // 8. 健康检查
  78. const healthMetrics = controlPlane.getHealthMetrics()
  79. logger.info('健康指标:', {
  80. 系统健康: healthMetrics.systemHealth,
  81. 活跃警报: healthMetrics.activeAlerts,
  82. 关键警报: healthMetrics.criticalAlerts,
  83. 运行时间: `${Math.round(healthMetrics.uptime / 1000)}秒`
  84. })
  85. logger.info('🎉 控制平面演示完成')
  86. } catch (error: any) {
  87. logger.error(`演示失败: ${error.message}`)
  88. process.exit(1)
  89. }
  90. }
  91. // 运行演示
  92. if (require.main === module) {
  93. main().catch(console.error)
  94. }
  95. export { main }