|
@@ -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}")
|