mex api progress
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user