mex api progress

This commit is contained in:
Dobromir Popov
2025-05-27 14:06:38 +03:00
parent ae62d893bc
commit 2d2db276f3
4 changed files with 218 additions and 76 deletions

View File

@ -149,26 +149,34 @@ class TradingDashboard:
if self.trading_executor and hasattr(self.trading_executor, 'get_account_balance'):
logger.info("Fetching initial balance from MEXC...")
# Get USDT balance from MEXC
balance_info = self.trading_executor.get_account_balance()
if balance_info and 'USDT' in balance_info:
usdt_balance = float(balance_info['USDT'].get('free', 0))
if usdt_balance > 0:
logger.info(f"MEXC: Retrieved USDT balance: ${usdt_balance:.2f}")
return usdt_balance
else:
logger.warning("MEXC: No USDT balance found")
# Check if trading is enabled and not in dry run mode
if not self.trading_executor.trading_enabled:
logger.warning("MEXC: Trading not enabled - using default balance")
elif self.trading_executor.dry_run:
logger.warning("MEXC: Dry run mode enabled - using default balance")
else:
logger.warning("MEXC: Failed to retrieve balance info")
# Get USDT balance from MEXC
balance_info = self.trading_executor.get_account_balance()
if balance_info and 'USDT' in balance_info:
usdt_balance = float(balance_info['USDT'].get('free', 0))
if usdt_balance > 0:
logger.info(f"MEXC: Retrieved USDT balance: ${usdt_balance:.2f}")
return usdt_balance
else:
logger.warning("MEXC: No USDT balance found in account")
else:
logger.error("MEXC: Failed to retrieve balance info from API")
else:
logger.info("MEXC: Trading executor not available for balance retrieval")
except Exception as e:
logger.error(f"Error getting MEXC balance: {e}")
import traceback
logger.error(traceback.format_exc())
# Fallback to default
default_balance = 100.0
logger.info(f"Using default starting balance: ${default_balance:.2f}")
logger.warning(f"Using default starting balance: ${default_balance:.2f}")
return default_balance
def _setup_layout(self):
@ -180,7 +188,7 @@ class TradingDashboard:
html.I(className="fas fa-chart-line me-2"),
"Live Trading Dashboard"
], className="text-white mb-1"),
html.P(f"Ultra-Fast Updates • Starting Balance: ${self.starting_balance:,.0f}",
html.P(f"Ultra-Fast Updates • Portfolio: ${self.starting_balance:,.0f}{'MEXC Live' if (self.trading_executor and self.trading_executor.trading_enabled and not self.trading_executor.dry_run) else 'Demo Mode'}",
className="text-light mb-0 opacity-75 small")
], className="bg-dark p-2 mb-2"),
@ -530,11 +538,12 @@ class TradingDashboard:
trade_count_text = f"{len(self.session_trades)}"
portfolio_text = f"${portfolio_value:,.2f}"
# MEXC status
# MEXC status with detailed information
if self.trading_executor and self.trading_executor.trading_enabled:
mexc_status = "LIVE"
elif self.trading_executor and self.trading_executor.dry_run:
mexc_status = "DRY RUN"
if self.trading_executor.dry_run:
mexc_status = "DRY RUN"
else:
mexc_status = "LIVE"
else:
mexc_status = "OFFLINE"
@ -1404,16 +1413,24 @@ class TradingDashboard:
# Add MEXC execution status to decision record
decision['mexc_executed'] = mexc_success
# Calculate USD-based position size for testing ($1 orders)
# Calculate position size based on confidence and configuration
if current_price and current_price > 0:
usd_size = 1.0 # $1 per trade for testing
# Get position sizing from trading executor configuration
if self.trading_executor:
usd_size = self.trading_executor._calculate_position_size(decision['confidence'], current_price)
else:
# Fallback calculation based on confidence
max_usd = 1.0 # Default max position
min_usd = 0.1 # Default min position
usd_size = max(min_usd, min(max_usd * decision['confidence'], max_usd))
position_size = usd_size / current_price # Convert USD to crypto amount
decision['size'] = round(position_size, 6) # Update decision with calculated size
decision['usd_size'] = usd_size # Track USD amount for logging
else:
# Fallback if no price available
decision['size'] = 0.001
decision['usd_size'] = 1.0
decision['usd_size'] = 0.1
if decision['action'] == 'BUY':
# First, close any existing SHORT position
@ -1485,7 +1502,7 @@ class TradingDashboard:
trade_record['fees'] = fee
self.session_trades.append(trade_record)
logger.info(f"[TRADE] OPENED LONG: {decision['size']:.6f} (~${decision.get('usd_size', 1.0):.2f}) @ ${decision['price']:.2f} (confidence: {decision['confidence']:.1%})")
logger.info(f"[TRADE] OPENED LONG: {decision['size']:.6f} (${decision.get('usd_size', 0.1):.2f}) @ ${decision['price']:.2f} (confidence: {decision['confidence']:.1%})")
elif self.current_position['side'] == 'LONG':
# Already have a long position - could add to it or replace it
@ -1610,7 +1627,7 @@ class TradingDashboard:
trade_record['fees'] = fee
self.session_trades.append(trade_record)
logger.info(f"[TRADE] OPENED SHORT: {decision['size']:.6f} (~${decision.get('usd_size', 1.0):.2f}) @ ${decision['price']:.2f} (confidence: {decision['confidence']:.1%})")
logger.info(f"[TRADE] OPENED SHORT: {decision['size']:.6f} (${decision.get('usd_size', 0.1):.2f}) @ ${decision['price']:.2f} (confidence: {decision['confidence']:.1%})")
elif self.current_position['side'] == 'SHORT':
# Already have a short position - could add to it or replace it