start-production.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #!/bin/bash
  2. ###############################################################################
  3. # 生产环境启动脚本
  4. #
  5. # 功能:
  6. # 1. 检查环境和配置
  7. # 2. 创建日志目录
  8. # 3. 启动策略并记录日志
  9. # 4. 提供优雅退出
  10. ###############################################################################
  11. set -e
  12. # 颜色定义
  13. RED='\033[0;31m'
  14. GREEN='\033[0;32m'
  15. YELLOW='\033[1;33m'
  16. NC='\033[0m' # No Color
  17. # 日志函数
  18. log_info() {
  19. echo -e "${GREEN}[INFO]${NC} $1"
  20. }
  21. log_warn() {
  22. echo -e "${YELLOW}[WARN]${NC} $1"
  23. }
  24. log_error() {
  25. echo -e "${RED}[ERROR]${NC} $1"
  26. }
  27. # 检查必要文件
  28. check_requirements() {
  29. log_info "检查环境要求..."
  30. # 检查配置文件
  31. if [ ! -f "config/accounts.json" ]; then
  32. log_error "缺少配置文件: config/accounts.json"
  33. exit 1
  34. fi
  35. if [ ! -f "config/trading-strategy.json" ]; then
  36. log_error "缺少配置文件: config/trading-strategy.json"
  37. exit 1
  38. fi
  39. if [ ! -f "config/delta-strategy-config.json" ]; then
  40. log_error "缺少配置文件: config/delta-strategy-config.json"
  41. exit 1
  42. fi
  43. # 检查 node_modules
  44. if [ ! -d "node_modules" ]; then
  45. log_warn "未安装依赖,正在安装..."
  46. npm install
  47. fi
  48. log_info "✅ 环境检查通过"
  49. }
  50. # 创建日志目录
  51. setup_logs() {
  52. log_info "设置日志目录..."
  53. mkdir -p logs
  54. mkdir -p logs/audit
  55. mkdir -p logs/performance
  56. log_info "✅ 日志目录已创建"
  57. }
  58. # 显示配置信息
  59. show_config() {
  60. log_info "当前配置:"
  61. # 读取策略配置
  62. SYMBOL=$(cat config/trading-strategy.json | jq -r '.symbol')
  63. VOLUME=$(cat config/trading-strategy.json | jq -r '.volumeTargetPerCycle')
  64. # 读取 Delta 配置
  65. INTERVAL=$(cat config/delta-strategy-config.json | jq -r '.strategy.tradingInterval')
  66. MAX_ORDER_AGE=$(cat config/delta-strategy-config.json | jq -r '.orderLifecycle.maxOrderAge')
  67. echo " 交易品种: $SYMBOL"
  68. echo " 周期交易量: $VOLUME BTC"
  69. echo " 交易间隔: $((INTERVAL / 1000)) 秒"
  70. echo " 订单超时: $((MAX_ORDER_AGE / 1000)) 秒"
  71. }
  72. # 启动前确认
  73. confirm_start() {
  74. echo ""
  75. read -p "确认启动策略? (yes/no): " -r
  76. echo
  77. if [[ ! $REPLY =~ ^[Yy]es$ ]]; then
  78. log_warn "启动已取消"
  79. exit 0
  80. fi
  81. }
  82. # 启动策略
  83. start_strategy() {
  84. log_info "启动 Delta 中性做市策略..."
  85. echo ""
  86. # 生成日志文件名
  87. DATE=$(date +%Y-%m-%d)
  88. TIME=$(date +%H-%M-%S)
  89. LOG_FILE="logs/session_${DATE}_${TIME}.log"
  90. log_info "日志文件: $LOG_FILE"
  91. echo ""
  92. # 启动策略
  93. tsx scripts/run-refactored-strategy.ts 2>&1 | tee "$LOG_FILE"
  94. }
  95. # 退出处理
  96. cleanup() {
  97. log_info "正在清理..."
  98. # 这里可以添加额外的清理逻辑
  99. exit 0
  100. }
  101. trap cleanup SIGINT SIGTERM
  102. ###############################################################################
  103. # 主流程
  104. ###############################################################################
  105. main() {
  106. echo ""
  107. echo "╔════════════════════════════════════════════════╗"
  108. echo "║ Pacifica Delta 中性做市策略 - 生产环境启动 ║"
  109. echo "╚════════════════════════════════════════════════╝"
  110. echo ""
  111. check_requirements
  112. setup_logs
  113. show_config
  114. confirm_start
  115. start_strategy
  116. }
  117. # 执行主流程
  118. main "$@"