Pārlūkot izejas kodu

fix(market_data_recorder): 添加错误堆栈信息到日志记录

在Binance数据收集出错时,现在会记录完整的错误堆栈信息,便于调试问题原因

refactor(strategy): 改进价差计算和日志输出格式

将价差计算单位改为bps并优化类型转换,同时简化日志输出格式,移除冗余信息
skyfffire 1 nedēļu atpakaļ
vecāks
revīzija
7e0d316ae1
2 mainītis faili ar 22 papildinājumiem un 9 dzēšanām
  1. 3 1
      src/record/market_data_recorder.py
  2. 19 8
      src/record/strategy.py

+ 3 - 1
src/record/market_data_recorder.py

@@ -176,7 +176,9 @@ async def handle_binance_data_collection():
                 await asyncio.sleep(0.3)
                 
         except Exception as e:
-            logger.error(f"Binance数据收集出错: {str(e)}")
+            import traceback
+            error_info = traceback.format_exc()
+            logger.error(f"Binance数据收集出错: {str(e)}\n{error_info}")
             await asyncio.sleep(1)  # 出错时等待1秒再重试
 
 

+ 19 - 8
src/record/strategy.py

@@ -10,6 +10,13 @@ from enum import Enum
 from datetime import datetime
 import os
 
+"""
+ind 0
+pub c787afe5ff5d02fb3b0180c86ea4bbf9bfdd1bcab3d96e395d52502532fe05cfc43807e062b16814
+pri f3625c4662ab0b338e405f61b7555e90aeda8fa28dd607588c9e275dc6f326ddcbd9341e18ca2950
+"""
+
+
 # 配置日志
 logs_dir = "logs"
 if not os.path.exists(logs_dir):
@@ -86,17 +93,21 @@ class TradingStrategy:
         lighter_mark = market_data.get('lighter_mark_price')
         lighter_price = market_data.get('lighter_price')
         
-        # 计算价差
+        # 计算价差,转换为bps单位
         if binance_price and lighter_price:
-            price_diff = binance_price - lighter_price
-            price_diff_pct = (price_diff / binance_price) * 100 if binance_price else 0
+            # 确保两个价格都是浮点数
+            binance_price_float = float(binance_price) if isinstance(binance_price, str) else binance_price
+            lighter_price_float = float(lighter_price) if isinstance(lighter_price, str) else lighter_price
+            
+            # 计算价差并转换为bps (1bps = 0.01%)
+            price_diff_bps = int((binance_price_float - lighter_price_float) / binance_price_float * 10000) if binance_price_float else 0
         else:
-            price_diff = None
-            price_diff_pct = None
+            price_diff_bps = None
+        
+        # 格式化输出
+        price_diff_str = f"{price_diff_bps}bps" if price_diff_bps is not None else "N/A"
         
-        logger.info(f"[{symbol}] Binance: 标记价={binance_mark}, 最新价={binance_price} | "
-                   f"Lighter: 标记价={lighter_mark}, 最新价={lighter_price} | "
-                   f"价差={price_diff:.6f if price_diff else 'N/A'} ({price_diff_pct:.4f}% if price_diff_pct else 'N/A')")
+        logger.info(f"[{symbol}] Binance: 最新价={binance_price} | Lighter: 最新价={lighter_price} | 价差={price_diff_str}")
     
     def _handle_waiting_init(self):
         """处理等待初始化状态"""