瀏覽代碼

Increment bot version to 2.6.308 and enhance PositionTracker with live market data integration

- Updated BOT_VERSION to 2.6.308.
- Added functionality in PositionTracker to fetch current market prices for accurate position value calculations.
- Implemented fallback logic to use entry price if market data retrieval fails, ensuring reliable position value updates.
- Improved logging to include position value and mark price in notifications for better traceability.
Carles Sentis 1 周之前
父節點
當前提交
71370c0af9
共有 2 個文件被更改,包括 26 次插入5 次删除
  1. 25 4
      src/monitoring/position_tracker.py
  2. 1 1
      trading_bot.py

+ 25 - 4
src/monitoring/position_tracker.py

@@ -212,21 +212,42 @@ class PositionTracker:
                         old_leverage = trade.get('leverage', 0)
                         new_leverage = pos_data['current_leverage']
                         
-                        # Update database with live market data
+                        # Get current market price for mark price and position value calculation
+                        current_mark_price = 0.0
+                        try:
+                            market_data = self.hl_client.get_market_data(symbol)
+                            if market_data and market_data.get('ticker'):
+                                current_mark_price = float(market_data['ticker'].get('last', 0))
+                        except Exception as e:
+                            logger.debug(f"Could not fetch current market price for {symbol}: {e}")
+                        
+                        # Fallback to entry price if we can't get current market price
+                        if current_mark_price <= 0:
+                            current_mark_price = pos_data['entry_px']
+                        
+                        # Calculate position value (size * current price)
+                        position_size = abs(pos_data['size'])
+                        position_value = position_size * current_mark_price
+                        
+                        # Update database with live market data including position value
                         self.trading_stats.update_trade_market_data(
                             trade_lifecycle_id=trade['trade_lifecycle_id'],
-                            current_position_size=abs(pos_data['size']),
+                            current_position_size=position_size,
                             unrealized_pnl=pos_data['unrealized_pnl'],
                             roe_percentage=roe_percentage,
+                            mark_price=current_mark_price,
+                            position_value=position_value,
                             margin_used=pos_data['margin_used'],
                             leverage=new_leverage  # Use current leverage, not max leverage
                         )
                         
                         # Log leverage changes
                         if old_leverage and abs(old_leverage - new_leverage) > 0.1:
-                            logger.info(f"📊 Database updated - Leverage changed for {symbol}: {old_leverage:.1f}x → {new_leverage:.1f}x")
+                            logger.info(f"📊 Database updated - Leverage changed for {symbol}: {old_leverage:.1f}x → {new_leverage:.1f}x, "
+                                      f"Position Value: ${position_value:,.2f}")
                         else:
-                            logger.debug(f"Updated market data for {symbol}: leverage={new_leverage:.1f}x, ROE={roe_percentage:.2f}%")
+                            logger.debug(f"Updated market data for {symbol}: leverage={new_leverage:.1f}x, ROE={roe_percentage:.2f}%, "
+                                       f"mark_price=${current_mark_price:.4f}, value=${position_value:,.2f}")
                         
                 except Exception as e:
                     logger.warning(f"Error updating market data for trade {trade.get('trade_lifecycle_id', 'unknown')}: {e}")

+ 1 - 1
trading_bot.py

@@ -14,7 +14,7 @@ from datetime import datetime
 from pathlib import Path
 
 # Bot version
-BOT_VERSION = "2.6.307"
+BOT_VERSION = "2.6.308"
 
 # Add src directory to Python path
 sys.path.insert(0, str(Path(__file__).parent / "src"))